TreeView И scroll
От: Аноним  
Дата: 26.02.08 04:18
Оценка:
Здравствуйте у меня есть свой класс:

сTreeView
{
std::map<string,HTREEITEM> m_NamesItem;
HTREEITEM m_select_element;
...................
void OnSelectNext();
void OnSelectLast();
void OnSelectItem(HTREEITEM hItem);
.........................................
}

Выделение элементов делаю так:


UINT cTreeView::isExpanded(HTREEITEM hItem)
{
    UINT index=TreeView_GetItemState(m_hWnd,hItem,TVIS_EXPANDED );
    return index;
}


 void cTreeView::OnSelectItem(HTREEITEM hItem){
         if(!isExpanded(hItem))
            TreeView_Expand(m_hWnd,hItem,TVE_EXPAND);
         ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem); 
         m_select_element=hItem;
}



Но вся проблема в том, что при выделении элемента не происходит скроллирования, хотя сам элемент подсвечивается, попробовал сделать так:

void cTreeView::OnSelectNext(){
   HTREEITEM hItem;
......................................
   OnSelectItem(hItem);
   ::SendMessage(m_hWnd, WM_VSCROLL, SB_LINEDOWN, 0);
   ::SendMessage( m_hWnd,WM_NCPAINT, 1, 0);
}

Теперь скролируеться, но всего на одну позицию (но это понятно), и если провести курсор над полосой прокрутки, то происходит правильное скролирование. Подскажите, как произвести скроллинг.
Re: TreeView И scroll
От: Master Gekus Россия  
Дата: 26.02.08 05:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте у меня есть свой класс:

А>UINT cTreeView::isExpanded(HTREEITEM hItem)
А>{
А>    UINT index=TreeView_GetItemState(m_hWnd,hItem,TVIS_EXPANDED );
А>    return index;
А>}


А> void cTreeView::OnSelectItem(HTREEITEM hItem){
А>         if(!isExpanded(hItem))
А>            TreeView_Expand(m_hWnd,hItem,TVE_EXPAND);
А>         ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem); 
А>         m_select_element=hItem;
А>}
А>

А>Но вся проблема в том, что при выделении элемента не происходит скроллирования, хотя сам элемент подсвечивается, попробовал сделать так:

Честно говоря, я не совсем понял, чего хотел достичь автор, но не имеет ли смысл посмотреть в сторону TVM_ENSUREVISIBLE?

С уважением,
Заливочкин Евгений
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.