выделение в CListView

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
vga
Сообщения: 9
Зарегистрирован: 16 авг 2004, 15:39
Откуда: Saint-Petersburg
Контактная информация:

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

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

*/
Hawk
Сообщения: 216
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

Помоему LVS_SINGLESEL поможет. Но при этом выделять только один элемент можно будет -

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

И если я не ошибаюсь, то этот стиль нельзя менять после создания. Т.е. лучше не через ModifyStyle а либо в Create выставлять этот стиль либо в ресурсах если он в диалоге
vga
Сообщения: 9
Зарегистрирован: 16 авг 2004, 15:39
Откуда: Saint-Petersburg
Контактная информация:

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

Вероятней всего это свойство именно CView, потому что, если кинуть СListCtrl на диалоговое окно, то такого выделения нет.
Как это свойство по английски называется, чтобы на Codeguru поискать?
:wink:
Hawk
Сообщения: 216
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

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.
vga
Сообщения: 9
Зарегистрирован: 16 авг 2004, 15:39
Откуда: Saint-Petersburg
Контактная информация:

Спасибо, Вы реально помогли!!!

: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;
}
---
Best regards,
vga
Hawk
Сообщения: 216
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

Это не мы =) это MSDN такой
Ответить