Om Tree-View kontroller

En trädvykontroll är ett fönster som visar en hierarkisk lista över objekt, till exempel rubrikerna i ett dokument, posterna i ett index eller filerna och katalogerna på en disk. Varje objekt består av en etikett och en valfri bild i bitmappformat, och varje objekt kan ha en lista över underobjekt som är associerade med det. Genom att klicka på ett objekt kan användaren expandera eller dölja den associerade listan över underobjekt.

Följande bild visar en enkel trädvisningskontroll med en rotnod, en expanderad nod och en komprimerad nod. Kontrollen använder en bitmapp för det markerade objektet och en annan bitmapp för andra objekt.

skärmbild som visar fem noder i en hierarki. texten i en nod är markerad, men noder länkas inte till varandra av rader

När du har skapat en trädvisningskontroll lägger du till, tar bort, ordnar eller på annat sätt ändrar objekt genom att skicka meddelanden till kontrollen. Varje meddelande har ett eller flera motsvarande makron som du kan använda i stället för att uttryckligen skicka meddelandet.

Tree-View formatmallar

Trädvyformat styr aspekter av en trädvisningskontrolls utseende. Du anger de inledande formaten när du skapar trädvisningskontrollen. Du kan hämta och ändra formatmallarna när du har skapat trädvisningskontrollen med hjälp av funktionerna GetWindowLong och SetWindowLong.

Stilen TVS_HASLINES förbättrar den grafiska representationen av en trädvisningskontrolls hierarki genom att rita linjer som kopplar samman underordnade objekt till deras överordnade objekt, som visas i följande illustration.

skärmbild som visar det tidigare arrangemanget, men med linjer som sammanfogar noderna; den första raden kommer från rotnoden

Det här formatet ritar inte linjer vid hierarkins rot. För att göra det måste du kombinera formatmallarna TVS_HASLINES och TVS_LINESATROOT. Resultatet visas i följande bild.

skärmbild som visar föregående arrangemang, men med ytterligare en vågrät linje som leder till rotnoden

Användaren kan expandera eller dölja ett överordnat objekts lista över underordnade objekt genom att dubbelklicka på det överordnade objektet. En trädvykontroll som har TVS_HASBUTTONS stil lägger till en knapp till vänster om varje överordnat objekt. Användaren kan klicka på knappen en gång i stället för att dubbelklicka på det överordnade objektet för att expandera eller dölja det underordnade objektet. TVS_HASBUTTONS lägger inte till knappar i objekt i hierarkins rot. Om du vill göra det måste du kombinera TVS_HASLINES, TVS_LINESATROOToch TVS_HASBUTTONS. Den här kombinationen av stilar visas i följande bild.

skärmbild som visar föregående arrangemang, men med knappar för att expandera/komprimera vid varje hörn av två linjer

Det TVS_CHECKBOXES formatet skapar kryssrutor bredvid varje objekt. Om du vill använda kryssruteformatet måste du ange TVS_CHECKBOXES formatmall (med SetWindowLong) när du har skapat trädvisningskontrollen och innan du fyller i trädet. Annars kan kryssrutorna visas avmarkerade, beroende på tidsproblem. Följande bild visar kryssruteformatet.

skärmbild som visar föregående arrangemang, men med en kryssruta bredvid varje nod. två av kryssrutorna är markerade

Den TVS_FULLROWSELECT formatmallen gör att markeringen utökas över kontrollens fulla bredd, inte bara över själva objektet. Följande bild visar den här stilen.

skärmbild som visar det ursprungliga arrangemanget med fem noder utan linjer, men markeringen utökar kontrollens fullständiga bredd

Formatet TVS_EDITLABELS gör det möjligt för användaren att redigera etiketterna för trädvyobjekt. Mer information om hur du redigerar etiketter finns i Tree-View Etikettredigering.

Mer information om dessa och andra stilar finns i Tree-View Kontrollfönsterstilar.

Förälder- och barnetem

Vilket objekt som helst i en trädvy-kontroll kan ha en lista av underelement – kallade underelement– associerade med det. Ett objekt som har ett eller flera underordnade objekt kallas för ett överordnat objekt. Ett barnobjekt visas under det överordnade objektet och är indraget för att indikera dess hierarkiska nivå. Ett objekt som inte har någon överordnad visas överst i hierarkin och kallas för ett rotobjekt.

Om du vill lägga till ett objekt i en trädvisningskontroll skickar du meddelandet TVM_INSERTITEM till kontrollen. Meddelandet returnerar en referens till HTREEITEM-typen, som unikt identifierar objektet. När du lägger till ett objekt måste du ange referensen till det nya objektets överordnade objekt. Om du anger NULL eller TVI_ROOT-värdet i stället för ett överordnat objektshandtag i TVINSERTSTRUCT--strukturen läggs objektet till som ett rotobjekt.

När som helst kan tillståndet för ett överordnat objekts lista över underordnade objekt antingen expanderas eller komprimeras. När expanderingsläget är aktivt visas de underordnade objekten under det överordnade objektet. När den är ihopfälld visas inte underobjekten. Listan växlar automatiskt mellan de expanderade och komprimerade tillstånden när användaren dubbelklickar på det överordnade objektet eller, om den överordnade har formatet TVS_HASBUTTONS, när användaren klickar på knappen som är associerad med det överordnade objektet. Ett program kan expandera eller dölja underordnade objekt med hjälp av meddelandet TVM_EXPAND.

En trädvykontroll skickar det överordnade fönstret ett TVN_ITEMEXPANDING meddelandemeddelande när ett överordnat objekts lista över underordnade objekt håller på att expanderas eller döljas. Meddelandet ger ett program möjlighet att förhindra ändringen eller att ange attribut för det överordnade objektet som är beroende av tillståndet för listan över underordnade objekt. När statusen för listan har ändrats, skickar trädvisningskontrollen ett TVN_ITEMEXPANDED meddelande till det överordnade fönstret.

När en lista över underordnade objekt expanderas indenteras den i förhållande till föräldraobjektet. Du kan ange mängden indrag med hjälp av TVM_SETINDENT-meddelandet eller hämta det aktuella beloppet med hjälp av TVM_GETINDENT meddelandet.

En trädvykontroll använder minne som allokerats från heapen i processen som skapar trädvykontrollen. Det maximala antalet objekt i en trädvy baseras på mängden minne som är tillgängligt i heapen.

Objektetiketter

Du anger vanligtvis texten i ett objekts etikett när du lägger till objektet i trädvisningskontrollen. Meddelandet TVM_INSERTITEM innehåller en TVITEM- struktur som definierar objektets egenskaper, inklusive en sträng som innehåller etikettens text.

En trädvykontroll allokerar minne för att lagra varje objekt. texten i objektetiketterna tar upp en betydande del av det här minnet. Om programmet har en kopia av strängarna i trädvisningskontrollen kan du minska minneskraven för kontrollen genom att ange värdet LPSTR_TEXTCALLBACK i pszText medlem i TVITEM- i stället för att skicka faktiska strängar till trädvyn. Om du använder LPSTR_TEXTCALLBACK kan trädvisningskontrollen hämta texten i ett objekts etikett från det överordnade fönstret när objektet behöver ritas om. För att hämta texten skickar trädvisningskontrollen ett TVN_GETDISPINFO meddelandemeddelande, som innehåller adressen till en NMTVDISPINFO struktur. Det överordnade fönstret måste fylla i den inkluderade strukturens lämpliga medlemmar.

Tree-View Etikettredigering

Användaren kan redigera etiketterna för objekt direkt i en trädvykontroll som har TVS_EDITLABELS formatmall. Användaren börjar redigera genom att klicka på etiketten för det objekt som har fokus. Ett program börjar redigera med hjälp av meddelandet TVM_EDITLABEL. Trädvisningskontrollen meddelar det överordnade fönstret när redigeringen börjar och när den avbryts eller slutförs. När redigeringen är klar ansvarar det överordnade fönstret för att uppdatera objektets etikett, om det är lämpligt.

När etikettredigeringen börjar skickar en trädvykontroll ett TVN_BEGINLABELEDIT-meddelande till det överordnade fönstret. Genom att bearbeta det här meddelandet kan ett program tillåta redigering av vissa etiketter och förhindra redigering av andra. Om du returnerar noll kan du redigera och returnera nonzero förhindrar det.

När etikettredigering avbryts eller slutförs skickar en trädvykontroll sitt överordnade fönster ett TVN_ENDLABELEDIT meddelandemeddelande. Parametern lParam är adressen till en NMTVDISPINFO- struktur. Parametern objekt är en TVITEM- struktur som identifierar objektet och innehåller den redigerade texten. Det överordnade fönstret ansvarar för att uppdatera objektets etikett om det vill behålla den nya etiketten. pszText medlemsvariabel i TVITEM blir noll om redigeringen avbryts.

Under etikettredigering, vanligtvis som svar på TVN_BEGINLABELEDIT meddelandemeddelande, kan du hämta handtaget till redigeringskontrollen som används för etikettredigering med hjälp av TVM_GETEDITCONTROL meddelandet. Du kan skicka redigeringskontrollen ett EM_SETLIMITTEXT meddelande för att begränsa mängden text som en användare kan ange eller underklassa redigeringskontrollen för att fånga upp och ignorera ogiltiga tecken. Observera dock att redigeringskontrollen endast visas efter att TVN_BEGINLABELEDIT har skickats.

Tree-View objektens position

Ett objekts inledande position anges när objektet läggs till i trädvisningskontrollen med hjälp av meddelandet TVM_INSERTITEM. Meddelandet innehåller en TVINSERTSTRUCT- struktur som anger referensen till det överordnade objektet och handtaget till objektet varefter det nya objektet ska infogas. Det andra handtaget måste identifiera antingen ett underelement i det övergripande objektet eller något av följande värden: TVI_FIRST, TVI_LAST eller TVI_SORT.

När TVI_FIRST eller TVI_LAST anges placerar trädvisningskontrollen det nya objektet i början eller slutet av det angivna överordnade objektets lista över underordnade objekt. När TVI_SORT anges lägger kontrollen för trädvy till det nya objektet i listan över underordnade objekt i alfabetisk ordning baserat på texten i etiketterna.

Du kan placera ett överordnat objekts lista över underordnade objekt i alfabetisk ordning med hjälp av meddelandet TVM_SORTCHILDREN. En parameter i meddelandet anger om alla nivåer av underordnade element som härstammar från det angivna överordnade elementet också sorteras i alfabetisk ordning.

Genom att använda meddelandet TVM_SORTCHILDRENCB kan du sortera delsobjekt baserat på kriterier som du själv definierar. När du använder det här meddelandet anger du en programdefinierad återanropsfunktion som trädvisningskontrollen kan anropa när den relativa ordningen för två underordnade objekt måste bestämmas. Återanropsfunktionen tar emot två 32-bitars programdefinierade värden för de objekt som jämförs och ett tredje 32-bitarsvärde som du anger när du skickar TVM_SORTCHILDRENCB.

Översikt över Tree-View objekttillstånd

Varje objekt i en trädvykontroll har ett aktuellt tillstånd. Tillståndsinformationen för varje objekt innehåller en uppsättning bitflaggor samt bildlistindex som anger objektets tillståndsbild och överläggsbild. Bitflaggor anger om objektet är markerat, inaktiverat, expanderat och så vidare. För det mesta anger en trädvykontroll automatiskt ett objekts tillstånd för att återspegla användaråtgärder, till exempel val av ett objekt. Du kan dock också ange ett objekts tillstånd med hjälp av TVM_SETITEM-meddelandet, och du kan hämta det aktuella tillståndet för ett objekt med hjälp av TVM_GETITEM-meddelandet. En fullständig lista över objekttillstånd finns i Tree-View Kontrollobjekttillstånd.

Ett objekts aktuella tillstånd anges av tillståndsmedlemmen i TVITEM---strukturen. En trädvykontroll kan ändra ett objekts tillstånd så att det återspeglar en användaråtgärd, till exempel att välja objektet eller ställa in fokus på objektet. Dessutom kan ett program ändra ett objekts tillstånd för att inaktivera eller dölja objektet eller för att ange en överläggsbild eller tillståndsbild.

När du anger eller ändrar ett objekts tillstånd anger statemask medlem i TVITEM vilka tillståndsbitar som ska anges och tillstånd medlem innehåller de nya värdena för dessa bitar.

Om du vill ange ett objekts överläggsbild, måste statemask inkludera värdet TVIS_OVERLAYMASK, och tillstånd måste innehålla det enbaserade indexet för överläggsbilden, skiftat 8 bitar åt vänster med hjälp av INDEXTOOVERLAYMASK makro. Indexet kan vara noll om du inte vill ange någon överläggsbild.

En tillståndsbild visas bredvid ett objekts ikon för att ange ett programdefinierat tillstånd. Tillståndsbilder finns i en tillståndsbildlista som anges genom att skicka ett TVM_SETIMAGELIST meddelande. För att ställa in ett objekts tillståndsbild, inkludera värdet TVIS_STATEIMAGEMASK i medlemmen statemask av strukturen TVITEM. Bitar 12 till 15 av strukturens -tillståndets-medlem anger indexet i tillståndsbildernas lista för bilden som ska ritas.

Om du vill ange statusbildindexet använder du INDEXTOSTATEIMAGEMASK. Det här makrot tar ett index och anger bitar mellan 12 och 15 på rätt sätt. Om du vill ange att objektet inte har någon tillståndsbild anger du indexet till noll. Den här konventionen innebär att bild noll i listan över tillståndsbild inte kan användas som en tillståndsbild. För att isolera bitarna 12 till 15 hos statusen medlem, använd TVIS_STATEIMAGEMASK masken. Mer information om överlägg och tillståndsbilder finns i Tree-View Bildlistor.

Val av objekt

En trädvykontroll meddelar det överordnade fönstret när markeringen ändras från ett objekt till ett annat genom att skicka meddelandena TVN_SELCHANGING och TVN_SELCHANGED. Båda meddelandena innehåller ett värde som anger om ändringen är resultatet av ett musklick eller en tangenttryckning. Meddelandena innehåller också information om objektet som får markeringen och det objekt som förlorar markeringen. Du kan använda den här informationen för att ange objektattribut som är beroende av objektets urvalstillstånd. Om du returnerar TRUE som svar på TVN_SELCHANGING förhindras valet från att ändras, och om du returnerar FALSE tillåter det att valet ändras.

Ett program kan ändra markeringen genom att skicka meddelandet TVM_SELECTITEM.

Objektinformation

Trädvisningskontroller stöder ett antal meddelanden som hämtar information om objekt i trädvisningen.

Meddelandet TVM_GETITEM kan hämta ett objekts handtag och attribut. Ett objekts attribut innehåller dess aktuella tillstånd, indexen i kontrollens bildlista över objektets markerade och omarkerade bitmappade bilder, en flagga som anger om objektet har underordnade objekt, adressen till objektets etikettsträng och objektets programdefinierade 32-bitarsvärde.

Meddelandet TVM_GETNEXTITEM hämtar det trädvyobjekt som har den angivna relationen till det aktuella objektet. Meddelandet kan hämta ett objekts överordnade objekt, nästa eller föregående synliga objekt, det första underordnade objektet och så vidare.

Meddelandet TVM_GETITEMRECT hämtar avgränsningsrektangeln för ett trädvyobjekt. Meddelandena TVM_GETCOUNT och TVM_GETVISIBLECOUNT hämtar ett antal objekt i en trädvisningskontroll och antalet objekt som kan vara helt synliga i trädvisningskontrollens fönster. Du kan se till att ett visst objekt visas med hjälp av meddelandet TVM_ENSUREVISIBLE.

Tree-View Bildlistor

Varje objekt i en trädvykontroll kan ha fyra bitmappade bilder associerade med det.

  • En bild, till exempel en öppen mapp, visas när objektet är markerat.
  • En bild, till exempel en stängd mapp, visas när objektet inte är markerat.
  • En överläggsbild som ritas transparent över den markerade eller omarkerade bilden.
  • En tillståndsbild, som är en ytterligare bild som visas till vänster om den markerade eller omarkerade bilden. Du kan använda tillståndsbilder, till exempel markerade och avmarkerade kryssrutor, för att ange programdefinierade objekttillstånd.

Som standard visar inte en trädvykontroll objektbilder. Om du vill visa objektbilder måste du skapa bildlistor och associera dem med kontrollen. Mer information om bildlistor finns i bildlistor.

En trädvykontroll kan ha två bildlistor: en normal bildlista och en tillståndsbildlista. En normal bildlista lagrar de markerade, omarkerade och överlagrade bilderna. En tillståndsbildlista lagrar tillståndsbilder. Använd funktionen ImageList_Create för att skapa en bildlista och använda andra bildlistfunktioner för att lägga till bitmappar i bildlistan. Använd sedan meddelandet TVM_SETIMAGELIST om du vill associera bildlistan med trädvisningskontrollen. Meddelandet TVM_GETIMAGELIST hämtar ett handtag till en av en trädvisningskontrolls bildlistor. Det här meddelandet är användbart om du behöver lägga till fler bilder i listan.

Förutom de markerade och omarkerade bilderna kan en trädvisningskontrolls normala bildlista innehålla upp till fyra överläggsbilder. Överläggsbilder identifieras av ett enbaserat index och är utformade för att ritas transparent över de valda och omarkerade bilderna. Om du vill tilldela ett överläggsmaskindex till en bild i den normala bildlistan anropar du funktionen ImageList_SetOverlayImage.

Som standard visar alla objekt den första bilden i den normala bildlistan för både de valda och omarkerade tillstånden. Objekt visar inte heller överläggsbilder eller tillståndsbilder som standard. Du kan ändra dessa standardbeteenden för ett objekt genom att skicka meddelandet TVM_INSERTITEM eller TVM_SETITEM. Dessa meddelanden använder TVITEM- struktur för att ange bildlisteindex för ett objekt.

Om du vill ange ett objekts markerade och omarkerade bilder, ställ in TVIF_SELECTEDIMAGE- och TVIF_IMAGE-bitarna i -maskens-medlem i TVITEM-struktur och ange index från kontrollens normala bildlista i iSelectImage- och iImage--medlemmar. Du kan också ange värdet för I_IMAGECALLBACK i iSelectImage och iImage i stället för att ange index. Detta gör att kontrollen frågar dess överordnade fönster om ett bildlisteindex varje gång objektet är på väg att ritas om. Kontrollen skickar TVN_GETDISPINFO meddelandemeddelande för att hämta indexet.

Om du vill associera en överläggsbild med ett objekt använder du INDEXTOOVERLAYMASK-makro för att ange ett överläggsmaskindex i tillståndsmedlemmen av objektets TVITEM-struktur. Du måste också ange TVIS_OVERLAYMASK bitarna i stateMask del. Överläggsmaskindex är enbaserade; ett nollindex anger att ingen överläggsbild har angetts.

Tillståndsavbildningar lagras i en separat lista över tillståndsavbildningar och identifieras av deras index. Om du vill ange statusbildlistan skickar du ett TVM_SETIMAGELIST meddelande. Till skillnad från listvisningskontrollen, som använder ett enbaserat index för att identifiera tillståndsbilder, identifieras trädvisningskontrolltillståndsbilder av ett nollbaserat index. Ett index på noll anger dock att objektet inte har någon tillståndsbild. Därför kan inte bild noll användas som en tillståndsbild. Mer information om objekttillstånd och tillståndsbilder finns i Tree-View Översikt över objekttillstånd.

Dra och släpp-funktioner

En trädvykontroll meddelar det överordnade fönstret när användaren börjar dra ett objekt. Det överordnade fönstret får ett TVN_BEGINDRAG meddelandemeddelande när användaren börjar dra ett objekt med vänster musknapp och ett TVN_BEGINRDRAG meddelandemeddelande när användaren börjar dra med höger knapp. Du kan förhindra att en trädvykontroll skickar dessa meddelanden genom att ge trädvykontrollen TVS_DISABLEDRAGDROP stil.

Du hämtar en bild som ska visas under en dragåtgärd med hjälp av meddelandet TVM_CREATEDRAGIMAGE. Trädvisningskontrollen skapar en bitmapp för dragning baserat på etiketten på det objekt som dras. Sedan skapar trädvisningskontrollen en bildlista, lägger till bitmappen i den och returnerar handtaget till bildlistan.

Du måste ange den kod som faktiskt drar objektet. Detta innebär vanligtvis att använda dragningsfunktionerna i bildlistefunktionerna och bearbeta meddelandena WM_MOUSEMOVE och WM_LBUTTONUP (eller WM_RBUTTONUP) som skickas till det överordnade fönstret efter att dragoperationen har börjat.

Om objekt i en trädvisningskontroll ska vara mål för dra och släpp-åtgärder måste du veta när muspekaren finns på ett målobjekt. Du kan ta reda på det med hjälp av meddelandet TVM_HITTEST. Du anger adressen för en TVHITTESTINFO struktur som innehåller muspekarens aktuella koordinater. När funktionen SendMessage returneras innehåller strukturen en flagga som anger muspekarens plats i förhållande till trädvisningskontrollen. Om pekaren är över ett objekt i trädvisningskontrollen innehåller strukturen även referensen till objektet.

Du kan ange att ett objekt är målet för en dra och släpp-åtgärd med hjälp av TVM_SETITEM-meddelandet för att ange tillståndet till TVIS_DROPHILITED-värdet. Ett objekt som har det här tillståndet ritas i den stil som används för att ange ett drag-and-drop-mål.

Tree-View Kontrollmeddelanden

En trädvykontroll skickar följande meddelanden till det överordnade fönstret i form av WM_NOTIFY meddelanden.

Anmälan Beskrivning
TVN_BEGINDRAG Signalerar början på en drag-och-släpp-åtgärd.
TVN_BEGINLABELEDIT Signalerar början av etikettredigering på plats.
TVN_BEGINRDRAG Signalerar att höger musknapp har startat en dra-och-släpp-åtgärd.
TVN_DELETEITEM Signalerar borttagning av ett specifikt objekt.
TVN_ENDLABELEDIT Signalerar slutet på etikettredigeringen.
TVN_GETDISPINFO Begär information som trädvisningskontrollen kräver för att visa ett objekt.
TVN_ITEMEXPANDED Signalerar att ett överordnat objekts lista över underordnade objekt har expanderats eller komprimerats.
TVN_ITEMEXPANDING Signalerar att ett överordnat objekts lista över underordnade objekt håller på att expanderas eller komprimeras.
TVN_KEYDOWN Signalerar en tangentbordshändelse.
TVN_SELCHANGED Signaler om att markeringen har ändrats från ett objekt till ett annat.
TVN_SELCHANGING Signalerar att markeringen håller på att ändras från ett objekt till ett annat.
TVN_SETDISPINFO Meddelar ett överordnat fönster att det måste uppdatera den information som det underhåller för ett objekt.

Standardbearbetning av Tree-View-kontrollmeddelande

I det här avsnittet beskrivs den fönstermeddelandebearbetning som utförs av en trädvykontroll. Meddelanden som är specifika för trädvisningskontroller beskrivs i andra avsnitt i det här dokumentet, så de tas inte med här.

Meddelande Beskrivning
WM_COMMAND Bearbetar redigeringskontrollens notifieringsmeddelanden för EN_UPDATE och EN_KILLFOCUS och vidarebefordrar alla andra notifieringar om redigeringskontroll till det överordnade fönstret. Det finns inget returvärde.
WM_CREATE Allokerar minne och initierar interna datastrukturer. Den returnerar noll om det lyckas, annars -1.
WM_DESTROY Frigör alla systemresurser som är associerade med kontrollen. Den returnerar noll.
WM_ENABLE Aktiverar eller inaktiverar kontrollen.
WM_ERASEBKGND Raderar fönsterbakgrunden med den aktuella bakgrundsfärgen för trädvisningskontrollen. Den returnerar TRUE.
WM_GETDLGCODE Returnerar en kombination av värdena DLGC_WANTARROWS och DLGC_WANTCHARS.
WM_GETFONT Returnerar handtaget till det aktuella etikettteckensnittet.
WM_HSCROLL Rullar trädvisningskontrollen. Funktionen returnerar TRUE om rullning sker, eller FALSE annars.
WM_KEYDOWN Skickar TVN_KEYDOWN meddelandet till det överordnade fönstret för alla tangenter. Skickar notifieringsmeddelandet NM_RETURN (trädvy) när användaren trycker på returtangenten. Det flyttar markören när användaren trycker på riktningstangenterna eller på PAGE UP, PAGE DOWN, HOME, END eller BACKSPACE-tangenterna. Den rullar trädvisningskontrollen när användaren trycker på CTRL-tangenten i kombination med dessa nycklar. Den returnerar TRUE om en nyckel bearbetas, eller FALSE annars.
WM_KILLFOCUS Ommålar det fokuserade objektet, om det finns, och skickar ett NM_KILLFOCUS (trädvy) meddelandemeddelande till det överordnade fönstret.
WM_LBUTTONDBLCLK Avbryter etikettredigering och skickar NM_DBLCLK (trädvy) meddelandemeddelande till det överordnade fönstret om ett objekt dubbelklickades. Om det överordnade fönstret returnerar 0 växlar trädvisningskontrollen objektets expanderade tillstånd och skickar det överordnade fönstret TVN_ITEMEXPANDING och TVN_ITEMEXPANDED meddelanden. Det finns inget returvärde.
WM_LBUTTONDOWN Växlar det expanderade tillståndet om användaren klickade på knappen som är associerad med ett överordnat objekt. Om användaren klickade på en objektetikett väljer och ställer trädvisningskontrollen in fokus på objektet. Om användaren flyttar musen innan du släpper musknappen påbörjar trädvisningskontrollen en dra-och-släpp-åtgärd. Det finns inget returvärde.
WM_PAINT Målar upp den ogiltiga regionen för trädvisningskontrollen. Den returnerar noll. Om parametern wParam inte ärNULL-förutsätter kontrollen att värdet är en referens till en enhetskontext (HDC) och målar med den enhetskontexten.
WM_RBUTTONDOWN Kontrollerar om ett objekt har klickats på och en dragåtgärd har påbörjats. Om åtgärden har påbörjats skickar den ett TVN_BEGINRDRAG meddelandemeddelande till det överordnade fönstret och markerar släppmålet. Annars skickar den ett NM_RCLICK (trädvy) meddelandemeddelande till det överordnade fönstret. Det finns inget returvärde.
WM_SETFOCUS Ommålar det fokuserade objektet, om det finns, och skickar ett NM_SETFOCUS meddelandemeddelande till det överordnade fönstret.
WM_SETFONT Sparar det angivna teckensnittshandtaget och ommålar trädvisningskontrollen med det nya teckensnittet.
WM_SETREDRAW Anger eller avmarkera flaggan för omritning. Trädvisningskontrollen ritas om när flaggan för att rita om har angetts. Den returnerar noll.
WM_SIZE Beräknar om interna variabler som är beroende av storleken på trädvisningskontrollens klientområde. Den returnerar TRUE.
WM_STYLECHANGED Avbryter etikettredigering och ritar om trädvisningskontrollen med hjälp av de nya formatmallarna. Den returnerar noll.
WM_SYSCOLORCHANGE Ritar på nytt trädvisningskontrollen med hjälp av den nya färgen om omarbetningsflaggan har angetts. Det finns inget returvärde.
WM_TIMER Börjar redigera en objektetikett. Om användaren klickar på etiketten för det fokuserade objektet anger trädvisningskontrollen en timer i stället för att ange redigeringsläget omedelbart. Timern gör det möjligt för trädvyn att undvika att ange redigeringsläge om användaren dubbelklickar på etiketten. Den returnerar noll.
WM_VSCROLL Rullar trädvisningskontrollen. Funktionen returnerar TRUE om rullning sker, eller FALSE annars.