Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Отменить выделение строки CListCtrl-a


Автор: Antropoid 19.8.2006, 22:38
Собственно вопрос озвучен(отмечу, что список,естесно,имеет стиль LVS_EX_FULLROWSELECT).

Автор: Romikgy 20.8.2006, 13:05
LB_SETSEL 
An application sends an LB_SETSEL message to select a string in a multiple-selection list box. 

LB_SETSEL  
wParam = (WPARAM) (BOOL) fSelect;   // selection flag 
lParam = (LPARAM) (UINT) index;     // item index 
 

Parameters

fSelect

Value of wParam. Specifies how to set the selection. If the fSelect parameter is TRUE, the string is selected and highlighted; if fSelect is FALSE, the highlight is removed and the string is no longer selected. 


index

Value of lParam. Specifies the zero-based index of the string to set. If index is -1, the selection is added to or removed from all strings, depending on the value of fSelect. 

Автор: Antropoid 20.8.2006, 21:03
Че-то не получается  smile  --->

Код


this->Create(LVS_REPORT | LVS_ALIGNLEFT | WS_CHILD |  WS_VISIBLE | WS_TABSTOP | LVS_EDITLABELS | LBS_NOTIFY,CRect(0,0,100,200),TabsCtrl,IDC_LIST1);
    
this->SendMessage(LB_SETCURSEL,(WPARAM)FALSE,(LPARAM)5); 


 smile 

Автор: Romikgy 20.8.2006, 22:15
Код

ListView_SetItemState(this->Handle,5,0,LVIS_SELECTED);

так попробуй

Автор: Antropoid 20.8.2006, 23:03
Ты,наверное, имел ввиду 
Код

ListView_SetItemState(this->GetSafeHwnd(),5,0,LVIS_SELECTED);

, но итак не канает! smile 

Автор: Romikgy 20.8.2006, 23:57
добавь после 
SetFocus(this->GetSafeHwnd());
и будет те щастье

Автор: Antropoid 22.8.2006, 22:29
Ты наверно имел ввиду 
Код

this->SetFocus();

, но и так мне одно горе! smile 

Автор: Earnest 23.8.2006, 09:05
Попробуй убрать не только LVIS_SELECTED, но и LVIS_FOCUSED. Т.е.
ListView_SetItemState (this->GetSafeHwnd(), 5, 0, LVIS_SELECTED | LVIS_FOCUSED);
И кстати, у CListCtrl есть метод SetItemState: SetItemState (5, 0, LVIS_SELECTED | LVIS_FOCUSED);
А также проверь, нет ли у контрола стиля  LVS_SHOWSELALWAYS.

Автор: Antropoid 23.8.2006, 21:45
LVS_SHOWSELALWAYS - нет, но на всякий случай --->
Код

this->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP| LVS_EX_FULLROWSELECT);

правильно так :
Код

this->SetItemState(5, LVIS_SELECTED, LVIS_SELECTED);
    
но я то просил подсказать, как отменить выделение?

Автор: Romikgy 23.8.2006, 21:50
Цитата(Antropoid @  23.8.2006,  20:45 Найти цитируемый пост)
this->SetItemState(5, LVIS_SELECTED, LVIS_SELECTED);

Код

this->SetItemState(5, 0, LVIS_SELECTED);


Добавлено @ 21:50 
Цитата(Earnest @  23.8.2006,  08:05 Найти цитируемый пост)
SetItemState (5, 0, LVIS_SELECTED | LVIS_FOCUSED);


Автор: Antropoid 23.8.2006, 22:43
Ну наконец-то!
Код
 :D 
this->SetItemState(5, 0, LVIS_SELECTED|LVIS_FOCUSED); 

-канает! А в случае
Код

this->SetItemState(5, 0, LVIS_SELECTED); 

- хоть выделение  и пропадает, но на его месте виднеется пунктирный прямоугольник - фокус ввода...
Ну тогда все. Всем спасибо. Закрыли тему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)