Выделение в ListView с LVS_SINGLESEL
От: NordS  
Дата: 24.01.05 16:25
Оценка:
Как можно выделить строку в CListViewCtr с установленным стилем LVS_SINGLESEL? SelectItem не работает.
Re: Выделение в ListView с LVS_SINGLESEL
От: rus blood Россия  
Дата: 24.01.05 18:06
Оценка: 2 (1)
Здравствуйте, NordS, Вы писали:

NS>Как можно выделить строку в CListViewCtr с установленным стилем LVS_SINGLESEL? SelectItem не работает.


SetItemState
Имею скафандр — готов путешествовать!
Re[2]: Выделение в ListView с LVS_SINGLESEL
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 25.01.05 05:05
Оценка:
Здравствуйте, rus blood, Вы писали:

NS>>Как можно выделить строку в CListViewCtr с установленным стилем LVS_SINGLESEL? SelectItem не работает.

RB>SetItemState

это в MFC надо было извращаться с SetItemState, а в WTL CListViewCtrlT::SelectItem() именно это и делает:

    BOOL SelectItem(int nIndex)
    {
        ATLASSERT(::IsWindow(m_hWnd));
        ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);

        BOOL bRet = SetItemState(nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
        if(bRet)
            bRet = EnsureVisible(nIndex, FALSE);
        return bRet;
    }
Re[3]: Выделение в ListView с LVS_SINGLESEL
От: NordS  
Дата: 25.01.05 06:53
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, rus blood, Вы писали:


NS>>>Как можно выделить строку в CListViewCtr с установленным стилем LVS_SINGLESEL? SelectItem не работает.

RB>>SetItemState

OE>это в MFC надо было извращаться с SetItemState, а в WTL CListViewCtrlT::SelectItem() именно это и делает:


OE>
OE>    BOOL SelectItem(int nIndex)
OE>    {
OE>        ATLASSERT(::IsWindow(m_hWnd));
OE>        ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);

OE>        BOOL bRet = SetItemState(nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
OE>        if(bRet)
OE>            bRet = EnsureVisible(nIndex, FALSE);
OE>        return bRet;
OE>    }
OE>


Да, но вот в чем дело:
ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
а у меня как раз стоит LVS_SINGLESEL
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[4]: Выделение в ListView с LVS_SINGLESEL
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 25.01.05 07:22
Оценка:
Здравствуйте, NordS, Вы писали:

NS>Да, но вот в чем дело:

NS>ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
NS>а у меня как раз стоит LVS_SINGLESEL

как устанавливал?
Re: Выделение в ListView с LVS_SINGLESEL
От: NordS  
Дата: 25.01.05 12:08
Оценка:
Здравствуйте, NordS, Вы писали:

NS>Как можно выделить строку в CListViewCtr с установленным стилем LVS_SINGLESEL? SelectItem не работает.


Всем спасибо за ответы.
SetItemState(nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); — при LVS_SINGLESEL работает.

Но спрашивается зачем было ставить
ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
в SelectItem
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re: Выделение в ListView с LVS_SINGLESEL
От: NordS  
Дата: 25.01.05 12:09
Оценка:
Здравствуйте, NordS, Вы писали:

NS>Как можно выделить строку в CListViewCtr с установленным стилем LVS_SINGLESEL? SelectItem не работает.


Всем спасибо за ответы.
SetItemState(nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); — при LVS_SINGLESEL работает.

Но спрашивается зачем было ставить
ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
в SelectItem
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[2]: Выделение в ListView с LVS_SINGLESEL
От: rus blood Россия  
Дата: 25.01.05 15:14
Оценка:
Здравствуйте, NordS, Вы писали:

NS>Но спрашивается зачем было ставить

NS>ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
NS>в SelectItem

Проверка, что в стилях выставлен бит LVS_SINGLESEL.
Если она у тебя не проходит, значит стиль у тебя не выставлен.
Имею скафандр — готов путешествовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.