Страница 1 из 1

выделение в CListView

Добавлено: 16 авг 2004, 16:20
vga
Добрый день!
Как сделать, чтобы при щелчке мышкой на ListCtrl и перемещении не появлялся пунктирный прямоугольник, очерчивающий область, в которой выделяются объекты.
ListCtrl в моде:

/* current mode
list.ModifyStyle( NULL, LVS_REPORT | LVS_SHOWSELALWAYS);
list.SetExtendedStyle( list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES );

*/

Добавлено: 16 авг 2004, 16:48
Hawk
Помоему LVS_SINGLESEL поможет. Но при этом выделять только один элемент можно будет -

list.ModifyStyle( NULL, LVS_REPORT | LVS_SHOWSELALWAYS|LVS_SINGLESEL);

И если я не ошибаюсь, то этот стиль нельзя менять после создания. Т.е. лучше не через ModifyStyle а либо в Create выставлять этот стиль либо в ресурсах если он в диалоге

Добавлено: 16 авг 2004, 17:25
vga
Да, это помогает, но нужно именно, чтобы был Мултироу селект работал. Например, в SourceSafe так и сделано.

Вероятней всего это свойство именно CView, потому что, если кинуть СListCtrl на диалоговое окно, то такого выделения нет.
Как это свойство по английски называется, чтобы на Codeguru поискать?
:wink:

Добавлено: 16 авг 2004, 17:51
Hawk
From MSDN:

LVN_MARQUEEBEGIN


Notifies a list-view control's parent window that a bounding box (marquee) selection has begun. This notification message is sent in the form of a WM_NOTIFY message.

LVN_MARQUEEBEGIN
pnmv = (LPNMLISTVIEW) lParam;

Parameters
pnmv
Address of an NMHDR structure.
Return Values

Note A bounding box selection is the process of clicking the list-view window's client area and dragging to select multiple items simultaneously.To accept the notification message, return zero. To quit the bounding box selection, return nonzero.

Добавлено: 16 авг 2004, 18:23
vga
Спасибо, Вы реально помогли!!!

:h
afx_msg void OnLvnBeginMarque(NMHDR* pNMHDR, LRESULT* pResult);

:cpp
ON_NOTIFY_REFLECT(LVN_MARQUEEBEGIN, OnLvnBeginMarque)
void CSearchListView::OnLvnBeginMarque(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 1;
}

Добавлено: 16 авг 2004, 18:38
Hawk
Это не мы =) это MSDN такой