Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
TVM_INSERTITEM iletisini denetime göndererek ağaç görünümü denetimine öğe eklersiniz. İleti, üst öğeyi, yeni öğenin eklendiği öğeyi ve öğenin özniteliklerini tanımlayan TVITEM yapısını belirten TVINSERTSTRUCT yapısının adresini içerir. Öznitelikler öğenin etiketini, seçili ve seçilmemiş görüntülerini ve 32 bit uygulama tanımlı bir değeri içerir.
Bilmeniz gerekenler
Teknolojileri
Önkoşullar
- C/C++
- Windows Kullanıcı Arayüzü Programlama
Talimatlar
Tree-View Öğe Ekleme
Bu bölümdeki örnekte, uygulama tanımlı bir dizide sağlanan belge başlığı bilgilerine dayalı olarak içindekiler tablosunun nasıl oluşturulacağı gösterilmektedir. Her dizi öğesi, başlık dizesini ve başlık düzeyini gösteren bir tamsayıdan oluşur. Örnek üç başlık düzeyini (1, 2 ve 3) destekler.
Örnek iki işlev içerir. İlk işlev, her başlığı ve eşlik eden başlık düzeyini ayıklar ve sonra bunları ikinci işleve geçirir.
İkinci işlev, ağaç görünümü denetimine bir öğe ekler. Öğenin etiketi olarak başlık metnini ve yeni öğenin üst öğesini belirlemek için başlık düzeyini kullanır. Ağaç görünümü kontrolünün köküne birinci seviye başlık eklenir, ikinci seviye başlık önceki birinci seviye öğenin alt öğesi olarak eklenir ve bu şekilde devam eder. İşlev, alt öğeleri olup olmadığına bağlı olarak bir öğeye görüntü atar. Bir öğenin alt öğeleri varsa, kapalı bir klasörü temsil eden bir resim alır. Aksi takdirde, belgeyi temsil eden bir görüntü alır. Bir öğe hem seçili hem de seçilmemiş durumlar için aynı görüntüyü kullanır.
// 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;
}