Здравствуйте у меня есть свой класс:
с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);
}
Теперь скролируеться, но всего на одну позицию (но это понятно), и если провести курсор над полосой прокрутки, то происходит правильное скролирование. Подскажите, как произвести скроллинг.