Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: WM_LBUTTONUP na liscie kontaktów
Konnekt | Forum > Developerzy > Tworzenie wtyczek
Aule
Otóż mam pewien problem, potrzebna mi jest obsługa komunikatów WM_LBUTTONDOWN i WM_LBUTTONUP na liście kontaktów. Subklasowałem listę, obsługuje komunikat WM_LBUTTONDOWN, jednak, jeżeli nie zatrzymam w jakiś sposób wykonywania tego komunikatu(np wywołując MessageBox), nie otrzymuje komunikatu WM_LBUTTONUP. Kawałek kodu, który zilustruje o co chodzi:
CODE

//Działający kod, pokaże się MB z treścią "Odcisnąłeś przycisk":
case WM_LBUTTONDOWN:
    MessageBox(NULL, "Przycisnąłeś przycisk", "title", MB_OK);
    //Tu to co chce zrobić
    break;
case WM_LBUTTONUP:
    MessageBox(NULL, "Odcisnąłeś przycisk", "title", MB_OK);
    //Tu to co chce zrobić
    break;

//Niedziałający kod, nie pokaże się MB z treścią "Odcisnąłeś przycisk":

case WM_LBUTTONDOWN:
    //Tu to co chce zrobić
    break;
case WM_LBUTTONUP:
    MessageBox(NULL, "Odcisnąłeś przycisk", "title", MB_OK);
    //Tu to co chce zrobić
    break;
W czym problem?
ursus6
Po otrzymaniu MSG WM_LBUTTONDOWN, wykonuje sie MessageBox. Gdybyś wciskał enter niezwalniając lewego przycisku myszy otrzymasz komunikat WM_LBUTTONUP. Możesz dać na końcu bloku z MSG WM_LBUTTONDOWN PostMessage(hListView, WM_LBUTTONUP, 0 ,0) jednocześnie musiałbyś sprawdzić czy przycisk myszy został zwolniony.
KoSiarzPL
Automatyczne zwalnianie przycisku jest bez sensu. W taki przypadku nie będziesz w stanie przeciągać obiektów, chyba że jest to ci nie potrzebne. Inna metoda to przechwycić komunikat wyjścia kursora poza okno lub utraty focusu lub po prostu przechwycić komunikaty myszki tak byś dostawał jes wszystkie nawet jeśli jest ona poza oknem.
Aule
Chodzi mi o zrobienie drag'n'dropa jednej pozycji na drugą. Cały algorytm mam, tylko nie dostaje komunikatu o zwolnieniu przycisku. Chyba nie pozostaje mi nic innego, niż zrobić jak mówi Kosiarz.
Aule
Niestety nawet dodając hooka na myszkę nie dostaje komunikatu WM_LBUTTONUP. Pewnie Ui blokuje.
Olórin
A listview nie ma przypadkiem osobnych WM_ od drag'n'dropa?
Aule
Hym, nie pomyślałem, żeby poszukać powiadomień dla ListView. Jest komunikat, zaraz go sprawdzę.

edit. Jest, ale od zaczynania przenoszenia, nie ma jakiegoś ENDDROPA'a, jak przy toolbarach. Będę sprawdzał, które komunikaty mogą coś poradzić.

edit1. Udało mi się, teraz jest inna kwestia. Jak zaznaczyć pozycje na ListView? Uzywając
CODE
ListView_SetItemState(hListView, 0, LVIS_SELECTED, LVIS_SELECTED);
nie udaje się... Męczę się z tym już od kilku wersji.
ursus6
Po ustawieniu itemu spróbuj dać focusa na listviewa.
Aule
Działa, dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.