На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> MFC: Как запретить сворачивание элементов CTreeCtrl?
    Добрый день.

    Подскажите, пожалуйста, как сделать, чтобы все элементы CTreeCtrl, которые имеют подэлементы, всегда были развернуты? Т.е., чтобы нельзя было по двойному клику или по клавишам «Влево»/«Вправо» их сворачивать/разворачивать.
      Алгоритм такой: в дереве, при добавлении разворачиваем ветки и не даём их свернуть.
      Делаешь класс наследник от CTreeCtrl - и в нем меняешь обработку нажатий клавиш.

      ExpandedWrap disabled
        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;
        }

      Обработка действий.
      ExpandedWrap disabled
        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);
        }


      Кода там прилично получится.
      Сообщение отредактировано: MaIron -
        Нашел такое решение: Handle the TVN_ITEMEXPANDING notification and set *pResult = 1;
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0182 ]   [ 17 queries used ]   [ Generated: 23.04.24, 12:30 GMT ]