
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.206.194.21] |
![]() |
|
![]() |
|
|
Добрый день.
Подскажите, пожалуйста, как сделать, чтобы все элементы CTreeCtrl, которые имеют подэлементы, всегда были развернуты? Т.е., чтобы нельзя было по двойному клику или по клавишам «Влево»/«Вправо» их сворачивать/разворачивать. |
Сообщ.
#2
,
|
|
|
Алгоритм такой: в дереве, при добавлении разворачиваем ветки и не даём их свернуть.
Делаешь класс наследник от CTreeCtrl - и в нем меняешь обработку нажатий клавиш. ![]() ![]() HTREEITEM CMainTree::AddItem(HTREEITEM hParent, LPCTSTR csItemName, HTREEITEM hInsAfter, int iSelImage, int iNonSelImage, long lParam) { HTREEITEM h_MainItm; TV_ITEM tvItem; TV_INSERTSTRUCT tvIns; CString sText = csItemName; tvItem.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; tvItem.pszText = sText.GetBuffer(sText.GetLength()); tvItem.cchTextMax = sText.GetLength(); tvItem.lParam = lParam; tvItem.iImage = iNonSelImage; tvItem.iSelectedImage = iSelImage; tvIns.item = tvItem; tvIns.hInsertAfter = hInsAfter; tvIns.hParent = hParent; h_MainItm = InsertItem(&tvIns); //Разворачиваем ветку Expand(hParent, TVE_EXPAND); return h_MainItm; } Обработка действий. ![]() ![]() void CMainTree::OnLButtonUp(UINT nFlags, CPoint point){ } void CMainTree::OnLButtonDown(UINT nFlags, CPoint point) { CTreeCtrl::OnLButtonDown(nFlags, point); } BOOL CMainTree::PreTranslateMessage(MSG* pMsg) { return CTreeCtrl::PreTranslateMessage(pMsg); } Кода там прилично получится. |
Сообщ.
#3
,
|
|
|
Нашел такое решение: Handle the TVN_ITEMEXPANDING notification and set *pResult = 1;
|