zaznaczanie elementu w listview

1

kolejny problem z kontrolka listview w winapi, za każdym razem gdy otwieram okno z listview ustawiam zaznaczenie z podświetleniem na 1 pozycje w ten sposób

ListView_SetItemState (global::listview, 0, LVIS_FOCUSED | LVIS_SELECTED,
                          LVIS_FOCUSED | LVIS_SELECTED);

i wszystko jest ok dopóki w listview nie użyje strzałek żeby wybrać jakąś dalsza pozycje bo wtedy kolejny razem gdy otworze okno z listview powyższa funkcja nie chce ustawić zaznaczenia 1 elementu a aktywne zostaje zaznaczenie rekordu który wybrałem wcześniej strzałkami...

wydaje mi się że to przez styl okna listview LVS_SINGLESEL który uniemożliwia zaznaczenie nowego elementu przed zwolnieniem poprzedniego zaznaczenia...

może wiecie jak odznaczyć zaznaczoną wcześniej pozycje w listview? jest do tego jakaś funkcja, makro?

0

Mógłbyś podać trochę więcej kodu?
Nie sądzę, że to wina LVS_SINGLESEL.

0

w oknie w którym mam listview sprawdzam czy w kontrolce są jakieś elementy i jeśli są przekazuje jej focusa + zaznaczam 1 pozycje

case WM_KEYDOWN:
        if (wParam == VK_TAB) {

            if (global::listview_line_size > 0) {
                SetFocus( global::listview );
                ListView_SetItemState (global::listview, 0, LVIS_FOCUSED | LVIS_SELECTED,
                        LVIS_FOCUSED | LVIS_SELECTED );

            }

i faktycznie ListView_GetSelectionMark( global::listview ) zwraca mi 0 czyli jest ustawione na 1 pozycji ale gdy dodam kolejny element który wstawiam na początku listview to zaznaczenie przechodzi razem z poprzednim elementem na 2 pozycje.

Jeśli w listview mam kilka pozycji i strzałkami ustawie np 4 pozycje to później po otwarciu okna gdy naciskam tab to ta linijka

ListView_SetItemState (global::listview, 0, LVIS_FOCUSED | LVIS_SELECTED,
                        LVIS_FOCUSED | LVIS_SELECTED );

nie powoduje zaznaczenia 1 elementu tylko zostaje ono cały czas na 4 i wydaje mi się że to wynika stąd ze nie może zmienić zaznaczenia na 1 pozycje bo jest już zaznaczony jakiś element a styl LVS_SINGLESEL nie pozwala zaznaczyć kolejnego i myślę że problem rozwiązało by przy wyłączaniu okna z listwiew usuwanie zaznaczenia bieżącego ale nie wiem jak to zrobić
próbowałem różnych kombinacji

ListView_SetItemState (global::listview, -1, 0,
                        LVIS_FOCUSED | LVIS_SELECTED );

ale nic nie pomagało, wszelkie sugestie mile widziane

0

próbowałeś samo LVIS_SELECTED (bez FOCUSED)?

0

tak ale wtedy nie zaznaczało mi tak na prawdę 1 pozycji tylko dawało tło zaznaczenia i musiałem raz nacisnąć strzałkę w dół żeby faktycznie zaznaczyło ten 1 element

1 użytkowników online, w tym zalogowanych: 0, gości: 1