LVN_KEYDOWN, problem

0

witam.
mam sobie oto taka kontrolke:
user image
kiedy poruszam sie po lewym ListViewie prawy wczytuje sobie i wyswietla pozycje odpowiednie do pozycji, ktora jest wybrana w lewym.
Kiedy wybieram sobie pozycje mysza WM_NOTIFY dostaje komunikat o kliknieciu, pobieram numer pozycji i wysiwietlam zawartosc prawego LV. wszystko ladnie pieknie. Problem pojawia sie kiedy poruszam sie po LV za pomoca klawiatury. wtedy oczywiscie WM_NOTIFY dostaje komunikat LVN_KEYDOWN ale dostaje go zanim jeszcze zmieni sie zaznaczona pozycje, czyli sprawdzajac wtedy, ktora pozycja jest zaznaczona otrzymam numer tej starej, jeszcze z przed zmiany. mam nadzieje ze wiadomo do tego momentu o co chodzi. Teraz zeby odpowiednio zmienic zawartosc prawego LV musze sprawdzic jaki klawisz zostal nacisniety (gora czy dol) obliczyc czy jesli gora to nie jestem na szczycie listy i zaznaczenie w zwiazku z tym sie nie zmieni, jesli nie to obliczyc pozycje nowej zaznaczonej pozycji itd itd. w sumie da sie to wszystko zrobic, ale strasznie sie trzeba nagrzebac i wyglada na to, ze windows zamiast zwrocic mi pozycje, ktora jest aktualnie zaznaczona "kaze mi jej samemu szukac!!!" podajac mi komunikat o zmianie przed sama zmiana. wpadlem na pomysl, ze zrobie inaczej. kiedy dostane powiadomienie o nacisnieciu klawisza, zamiast zaraz sprawdzac, co to za klawisz itp wysle komunikta ( SendMessage() ) ktory ustawi sie w kolejce komunikatow i... mialem nadzieje, ze petla odbierze go juz po zmianie zaznaczonej pozycji przez windowsa. wtedy sprawdze sobie, ktora pozycja jest aktualnie zaznaczona i bede wiedzial co wyswietlic w prawym LV pozbywajac sie tego calego obliczania. okazuje sie jednak ze tak nie jest. komunikat zostaje odebrany i przerobiony przez petle komunikatow szybciej niz zmiana zaznaczonej pozycji przez winde w LV. naprawde prosciej byloby gdybym mogl posilic sie np. komunikatem jak dla listboxa - ktory mowi, ze zaznaczenie zmienilo sie. (zmienilo sie !!! czyli wystarczy sprawdzic na jakiej pozycji jest teraz i po krzyku).

czy ktos ma moze pomysl na jakies inne sprytne rozwiazanie mojego problemu???

0

reaguj tylko na LVN_ITEMCHANGED - lParam wtedy wskazuje na NMLISTVIEW
Oczywiście w WM_NOTIFY

0

Aristo: Jak nastepnym razem bedziesz mial tak dlugi post z tyloma kombinacjami, to odejdz na moment od komputera :) Ja tak robie i zdarza sie dosc czesto, ze mnie nagle oswieci :P
Kombinujesz dobrze, tylko nie od tej strony. Jedno to co kolega powiedzial i to powinno rozwiazac calkowicie problem. Drugie - zapomniales o WM_KEYUP? :)

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