Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U voegt een item toe aan een besturingselement voor een structuurweergave door het bericht TVM_INSERTITEM naar het besturingselement te sturen. Het bericht bevat het adres van een TVINSERTSTRUCT structuur, het bovenliggende item, het item waarna het nieuwe item wordt ingevoegd en een TVITEM structuur die de kenmerken van het item definieert. De kenmerken omvatten het label van het item, de geselecteerde en niet-geselecteerde afbeeldingen, en een 32-bits door de toepassing gedefinieerde waarde.
Wat u moet weten
Technologieën
Vereiste voorwaarden
- C/C++
- Programmeren van Windows-gebruikersinterface
Aanwijzingen
Items toevoegen aan de Tree-View
In het voorbeeld in deze sectie ziet u hoe u een inhoudsopgave maakt op basis van documentkopinformatie die is opgegeven in een door de toepassing gedefinieerde matrix. Elk matrixelement bestaat uit een koptekenreeks en een geheel getal dat het kopniveau aangeeft. Het voorbeeld ondersteunt drie kopniveaus (1, 2 en 3).
Het voorbeeld bevat twee functies. Met de eerste functie worden elke kop en het bijbehorende kopniveau geëxtraheerd en vervolgens doorgegeven aan de tweede functie.
Met de tweede functie wordt een item toegevoegd aan een besturingselement voor structuurweergave. De koptekst wordt gebruikt als label van het item en gebruikt het kopniveau om het bovenliggende item voor het nieuwe item te bepalen. Een kop op niveau één wordt toegevoegd aan de hoofdmap van het besturingselement structuurweergave, er wordt een kop op niveau twee toegevoegd als een onderliggend item van het vorige niveau één item, enzovoort. Met de functie wordt een afbeelding toegewezen aan een item op basis van of deze onderliggende items bevat. Als een item onderliggende items bevat, krijgt het een afbeelding die een gesloten map vertegenwoordigt. Anders krijgt het een afbeelding die een document vertegenwoordigt. Een item gebruikt dezelfde afbeelding voor zowel de geselecteerde als niet-geselecteerde statussen.
// Adds items to a tree-view control.
// Returns the handle to the newly added item.
// hwndTV - handle to the tree-view control.
// lpszItem - text of the item to add.
// nLevel - level at which to add the item.
//
// g_nClosed, and g_nDocument - global indexes of the images.
HTREEITEM AddItemToTree(HWND hwndTV, LPTSTR lpszItem, int nLevel)
{
TVITEM tvi;
TVINSERTSTRUCT tvins;
static HTREEITEM hPrev = (HTREEITEM)TVI_FIRST;
static HTREEITEM hPrevRootItem = NULL;
static HTREEITEM hPrevLev2Item = NULL;
HTREEITEM hti;
tvi.mask = TVIF_TEXT | TVIF_IMAGE
| TVIF_SELECTEDIMAGE | TVIF_PARAM;
// Set the text of the item.
tvi.pszText = lpszItem;
tvi.cchTextMax = sizeof(tvi.pszText)/sizeof(tvi.pszText[0]);
// Assume the item is not a parent item, so give it a
// document image.
tvi.iImage = g_nDocument;
tvi.iSelectedImage = g_nDocument;
// Save the heading level in the item's application-defined
// data area.
tvi.lParam = (LPARAM)nLevel;
tvins.item = tvi;
tvins.hInsertAfter = hPrev;
// Set the parent item based on the specified level.
if (nLevel == 1)
tvins.hParent = TVI_ROOT;
else if (nLevel == 2)
tvins.hParent = hPrevRootItem;
else
tvins.hParent = hPrevLev2Item;
// Add the item to the tree-view control.
hPrev = (HTREEITEM)SendMessage(hwndTV, TVM_INSERTITEM,
0, (LPARAM)(LPTVINSERTSTRUCT)&tvins);
if (hPrev == NULL)
return NULL;
// Save the handle to the item.
if (nLevel == 1)
hPrevRootItem = hPrev;
else if (nLevel == 2)
hPrevLev2Item = hPrev;
// The new item is a child item. Give the parent item a
// closed folder bitmap to indicate it now has child items.
if (nLevel > 1)
{
hti = TreeView_GetParent(hwndTV, hPrev);
tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
tvi.hItem = hti;
tvi.iImage = g_nClosed;
tvi.iSelectedImage = g_nClosed;
TreeView_SetItem(hwndTV, &tvi);
}
return hPrev;
}
// Extracts heading text and heading levels from a global
// array and passes them to a function that adds them as
// parent and child items to a tree-view control.
// Returns TRUE if successful, or FALSE otherwise.
// hwndTV - handle to the tree-view control.
BOOL InitTreeViewItems(HWND hwndTV)
{
HTREEITEM hti;
// g_rgDocHeadings is an application-defined global array of
// the following structures:
// typedef struct
// {
// TCHAR tchHeading[MAX_HEADING_LEN];
// int tchLevel;
// } Heading;
for (int i = 0; i < ARRAYSIZE(g_rgDocHeadings); i++)
{
// Add the item to the tree-view control.
hti = AddItemToTree(hwndTV, g_rgDocHeadings[i].tchHeading,
g_rgDocHeadings[i].tchLevel);
if (hti == NULL)
return FALSE;
}
return TRUE;
}