Beispiel #1
0
void TreeView_ReleaseItem(HWND hctl, HTREEITEM hti, BOOL fDel)
{
	LPARAM		lparam = NULL;
	TreeView_GetItemParam(hctl, hti, lparam, LPARAM);
	if (lparam) {
		free((void*)lparam);
	}
	if (fDel) {
		TreeView_DeleteItem(hctl, hti);
	} else {
		TreeView_SetItemParam(hctl, hti, 0);
	}
	return;
}
static VOID
DestroyItem(HWND hTreeView,
            HTREEITEM hItem)
{
    HTREEITEM hChildItem;
    LPWSTR lpServiceName;

    /* Does this item have any children */
    hChildItem = TreeView_GetChild(hTreeView, hItem);
    if (hChildItem)
    {
        /* It does, recurse to that one */
        DestroyItem(hTreeView, hChildItem);
    }

    /* Get the string and free it */
    lpServiceName = (LPWSTR)TreeView_GetItemParam(hTreeView, hItem);
    if (lpServiceName)
    {
        HeapFree(GetProcessHeap(),
                 0,
                 lpServiceName);
    }
}