Re: Небольшая проблема с CTreeViewCtrlEx
От: clone Украина  
Дата: 13.06.04 09:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Если элементов в контроле нет или нет выделенных, tree.GetSelectedItem() как и требуется, возвращает NULL.

А>Но если есть элементы, то при клике просто в контроле (не по элементу), выделяется первый элемент.
А>И после этого снять выделение, то есть добиться, чтобы tree.GetSelectedItem() вернул NULL не могу.
А>Другие элементы выделять можно.
А>В общем хотелось бы следущего, при клике внутри контрола (не по элементу) снимать любое выделение.
А>tree.SelectItem(NULL) поможет, вот только в каком обработчике это сделать, я не знаю.

Как вариант:

class CMumble {
    // ...
    int m_nTreeID;
    
public:
    CMumble() : m_nTreeID(-1)
    {
        // ...
    }
    
    // ...
    
    BEGIN_MSG_MAP(CMumble)
        // ...
    NOTIFY_HANDLER(m_nTreeID, NM_CLICK, OnClickHandler)
        // ...
    END_MSG_MAP()
    
    // ...
    
    OnCreate()
    {
        // Has m_hWnd been initialized yet ?
        m_tree.Create(m_hWnd, NULL, NULL, TVS_FULLROWSELECT | TVS_HASBUTTONS | TVS_LINESATROOT | 
            TVS_HASLINES | TVS_EDITLABELS | TVS_DISABLEDRAGDROP| WS_CHILD | WS_VISIBLE |
            TVS_SHOWSELALWAYS /* OPTIONAL */);
        m_tree.SetImageList(m_images, TVSIL_NORMAL);
        m_nTreeID = m_tree.GetDlgCtrlID();
    }
    
    LRESULT OnClickHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
  {
    m_tree.SelectItem(NULL);
    return 0;
  }
}
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.