В OnCreate() окна делаю так:
OnCreate()
{
m_tree.Create(m_hWnd,NULL,NULL, TVS_FULLROWSELECT | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_EDITLABELS| TVS_DISABLEDRAGDROP| WS_CHILD | WS_VISIBLE );
m_tree.SetImageList(m_images, TVSIL_NORMAL);
}
Затем из какого-нибудь обработчика (меню):
AddItem()
{
HTREEITEM item = tree.GetSelectedItem();
HTREEITEM parent = item ? item : TVI_ROOT;
tree.InsertItem("ttt", hParent, TVI_LAST);
}
Если элементов в контроле нет или нет выделенных, tree.GetSelectedItem() как и требуется, возвращает NULL.
Но если есть элементы, то при клике просто в контроле (не по элементу), выделяется первый элемент.
И после этого снять выделение, то есть добиться, чтобы tree.GetSelectedItem() вернул NULL не могу.
Другие элементы выделять можно.
В общем хотелось бы следущего, при клике внутри контрола (не по элементу) снимать любое выделение.
tree.SelectItem(NULL) поможет, вот только в каком обработчике это сделать, я не знаю.