我正在公共控件列表视图中插入一个项目,如下所示:
void InsertRow (HWND hWnd, char *col1, char *col2)
{
LV_ITEM lvItem;
lvItem.mask = 0;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
lvItem.iItem = ListView_InsertItem (hWnd, &lvItem);
lvItem.mask = LVIF_TEXT;
lvItem.pszText = col1;
lvItem.cchTextMax = strlen (lvItem.pszText);
ListView_SetItem (hWnd, &lvItem);
lvItem.iSubItem = 1;
lvItem.pszText = col2;
lvItem.cchTextMax = strlen (lvItem.pszText);
ListView_SetItem (hWnd, &lvItem);
}
工作正常,但这是一个痛苦,因为垂直滚动返回到列表的顶部,所以如果我正在观看一个项目并调用这个插入函数,我就失去了我的视图,必须手动滚动,使我的程序无法使用。
我怎样才能防止这种自选?
我用C语言编程,直接使用Win32API(而不是MFC)。
P.D.:列表视图样式:
LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | WS_CHILD|WS_VISIBLE|WS_BORDER|WS_VSCROLL|WS_HSCROLL|LVS_REPORT
最佳答案
一种方法是获取当前的顶部位置,插入新项,然后(以编程方式)滚动回保存的顶部位置。