Witam. Mam kontrolkę List view i używam w swoim programie funkcji : ListView_HitTest. Zwraca ona indeks elementu , na którym został naciśnięty przycisk . Jako parametry przyjmuje uchwyt okna i strukturę LV_HITTESTINFO. I wszystko by było dobrze, gdyby nie to, że zwraca ona indeks elementu, ale nie zawsze tego, na którym został kliknięty przycisk myszki. Uzależnione to jest od pozycji myszki, tzn. jeśli ustawie kursor myszki przy górnej granicy elemetnu w listview to zwracany jest dobry indeks, a jeśli przesunę kursor mniejwięcej do połowy wysokości elementu to zwracany jest indeks kolejnego elemetnu:( . Zamieszczam fragment kodu :
POINT punkt;
GetCursorPos(&punkt); //pobieranie pozycji kursora
ScreenToClient(hListView,&punkt) ;// zmiana współrzędnych ekranowych na współrzędne kontrolki.
LV_HITTESTINFO str; //struktura potrzebna jako argument do funckcji
str.pt.x=5; //przypisanie współrzędnych myszki
str.pt.y=punkt.y;
str.flags= LVHT_ONITEMLABEL ;//flaga odpowiedzialna za znajdowanie elemetu na podstawie tekstu( czy coś takiego)
return ListView_HitTest(hListView,&str);
Jeśli ktoś robił już coś takiego ,nawet innym sposobem to proszę o fragmenty kodu. dzięki.
Co do drugiego pytania: czy ktoś mi może powiedzieć gdzie mam znaleźć opis co do sekcji krytycznej przy programowaniu wielowątkowym pod windowsem?? Znaczy chodzi mi o coś takiego jak semafor pod linuxem. Szukłem po różnych stronacha tematu synchronizacji wątków, ale jakoś nie natrafiłem na nic. Będe wdzięczny za cokolwiek