Hej ! :)
Doszedłem do pewnego momentu w programie i nie pasuje mi 1 rzecz:
Specjalnie zrobiłem tak, aby obliczenia dla każdej liczby elementów przy wyświetlaniu listy były takie same, aby prędkość była optymalna. Niestety coś mi nie wyszło. Wertuje kod już 666 raz i nie wiem o co biega.
Przedstawiam część kodu wraz z krótkim opisem:
http://pastebin.com/3LiJvg5G
Tutaj większa część kodu
http://pastebin.com/ABLVbtSn
- ScrollBar wysyła komunikat SBID_SUWAK (oznacza to, że _pos scrollbara zmienił się w stosunku do jego poprzedniej pozycji (nowa pozycja ScrollBara ustawia się autmatycznie) do procedury listy.
- Zdarzenie wędruje do wnętrza klasy przez udostępniony procedurze wskaźnik na funkcję Execute(), która obsługuje komunikaty zgodnie z przeznaczeniem. Tak więc wędrujemy do funkcji Proc_WM_COMMAND().
- Wewnątrz tejże funkcji wywoływana jest funkcja f_ListaDisplay(); i tu zaczynają się schody.
- Funkcja f_ListaDisplay(); wywołuje 3 funkcje po kolei:
a) f_ListaDisplayHide();
- Ukrywa ona elementy aktualnie wyświetlone na ekranie
b) f_ListaDisplaySet(); - Kasuje ona kontener wskaźników oraz zgodnie z pozycją ScrollBara uzupełnia go o nowe elementy.
c) f_ListaDisplayShow(); - Pokazuje nowe elementy na ekranie
- Dodatkowo ustawia pozycje elementów
Nie mam pomysłu, w którym miejscu tracę na prędkości wykonania funkcji. Specjalnie stworzyłem oddzielny kontener na wyświetlane elementy, aby nie przeszukiwać całego kontenera wszystkich elementów. Staram się maksymalnie ograniczyć pętle. Nie wiem. macie jakieś pomysły?
W załączniku przesyłam skompilowany program. Klawiszem "delete" dodajecie element listy.