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.