Frequently Asked Questions

How you have implemented it?! Do you use undocumented API of Microsoft®?

No, we use only documented Win32® API. It is our own implementation, unrelated to the implementation of Microsoft®. We implemented it using tree view common control API and Windows® shell API.

What is PIDL?

PIDL is a pointer to a sequence of bytes, which identifies a shell object (such as folder or file). Not every shell object (and even not every folder) is a file. For example, 'My Computer' isn't a file. For details see MSDN about The Shell Namespace.

FoldersTree control's window is empty. What is wrong?

You should insert an item associated with a shell object (such as desktop) into the control. See the description of FoldersTree_InsertFileSimple function and the example file test.cpp.

FoldersTree control does not work. What is wrong?

Probably you forgot to initialize the FoldersTree control class and/or a FoldersTree control. See the descriptions of the functions FoldersTree_InitClass and FoldersTree_Init.

Probably you forgot to call the function FoldersTree_ProcessNotificationMessage in the window procedure of the parent window of the FoldersTree control.

I inserted an item with TreeView_InsertItem macro and the FoldersTree controls crashes/hanges or functions incorrectly.

You need to 'bless' the items inserted by you by calling the function FoldersTree_BlessItem.

I changed lParam member of TVITEM structure of an item and/or GWL_USERDATA value of the control. Now it crashes/hanges/whatever.

In this implementation these values are reserved for the implementation. Do not change them.

To set or get the value associated with the control use functions FoldersTree_SetData and FoldersTree_GetData. To set or get the value associated with a tree item use functions FoldersTree_SetItemData and FoldersTree_GetItemData.