Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Položku přidáte do ovládacího prvku stromového zobrazení odesláním zprávy TVM_INSERTITEM ovládacímu prvku. Zpráva obsahuje adresu TVINSERTSTRUCT struktury, určení nadřazené položky, položky, za kterou je nová položka vložena, a TVITEM struktury, která definuje atributy položky. Mezi atributy patří popisek položky, jeho vybrané a nevybrané obrázky a 32bitová hodnota definovaná aplikací.
Co potřebujete vědět
Technologie
Požadavky
- C/C++
- Programování uživatelského rozhraní systému Windows
Instrukce
Přidat položky do Tree-View
Příklad v této části ukazuje, jak vytvořit obsah na základě informací o nadpisu dokumentu, které jsou uvedeny v poli definovaném aplikací. Každý prvek pole se skládá z řetězce nadpisu a celého čísla, které označuje úroveň nadpisu. Příklad podporuje tři úrovně nadpisů (1, 2 a 3).
Příklad obsahuje dvě funkce. První funkce extrahuje jednotlivé nadpisy a doprovodnou úroveň nadpisu a pak je předá druhé funkci.
Druhá funkce přidá položku do ovládacího prvku stromového zobrazení. Používá text nadpisu jako popisek položky a používá úroveň nadpisu k určení nadřazené položky pro novou položku. Do kořenového adresáře ovládacího prvku stromového zobrazení se přidá nadpis úrovně jedna, jako podřízenou položku předchozí úrovně se přidá nadpis úrovně dvě, a tak dále. Funkce přiřadí k položce obrázek podle toho, jestli obsahuje podřízené položky. Pokud položka obsahuje podřízené položky, získá obrázek, který představuje uzavřenou složku. V opačném případě získá obrázek, který představuje dokument. Položka používá stejný obrázek pro vybrané i nevybrané stavy.
// 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;
}