Udostępnij przez


Domyślne przetwarzanie komunikatów List-View

W tej sekcji wymieniono przetwarzanie komunikatów okna wykonywane przez kontrolkę widoku listy.

Przetwarzanie komunikatów

W poniższej tabeli opisano przetwarzanie komunikatów okna wykonywane przez kontrolkę widoku listy.

Komunikat Przetwarzanie wykonane
WM_CHAR Wyszukuje element widoku listy rozpoczynający się od określonego znaku, a jeśli element zostanie znaleziony, wybiera i ustawia fokus na element. Wiele znaków odebranych w interwale limitu czasu, obecnie ustalonych na jedną sekundę, jest połączonych, a kontrolka widoku listy wyszukuje element rozpoczynający się od wynikowego ciągu.
WM_COMMAND Przetwarza EN_UPDATE i EN_KILLFOCUS kody powiadomień oraz przekazuje wszystkie inne powiadomienia kontroli edycji do okna nadrzędnego.
WM_CREATE Wykonuje inicjację dodatkową, aby WM_NCCREATE. Jeśli nie określono stylu okna LVS_SHAREIMAGELISTS, kontrolka widok-listy tworzy ikonę i małe listy obrazów ikon w tym momencie.
WM_DESTROY Zwalnia zasoby przydzielone podczas WM_CREATE.
WM_ERASEBKGND Usuwa tło okna przy użyciu bieżącego koloru tła dla kontrolki widoku listy. Jeśli kolor tła jest wartością CLR_NONE, kontrolka widok-listy przekazuje komunikat do okna nadrzędnego.
WM_GETDLGCODE Zwraca kombinację wartości DLGC_WANTTAB i DLGC_WANTARROWS.
WM_GETFONT Zwraca uchwyt do bieżącej czcionki etykiety.
WM_HSCROLL Przewija kontrolkę widoku listy w poziomie.
WM_KEYDOWN Przetwarza SPACJI, ENTER i strzałek oraz wysyła kod powiadomienia LVN_KEYDOWN do okna nadrzędnego.
WM_KILLFOCUS Przemaluje element listy ukierunkowanej, jeśli istnieje, i wysyła kod powiadomienia NM_KILLFOCUS do okna nadrzędnego.
WM_LBUTTONDBLCLK Wysyła okno nadrzędne NM_DBLCLK (widok listy) kod powiadomienia.
WM_LBUTTONDOWN Przetwarzane na różne sposoby w zależności od tego, czy operacja kliknięcia lub przeciągania jest inicjowana. Aby określić, która operacja jest wykonywana, kontrolka widoku listy wprowadza modalną pętlę komunikatów do momentu zwolnienia przycisku lub przeniesienia myszy. W przypadku kliknięcia kontrolka widoku listy może zmienić element z fokusem i wybrane elementy, biorąc pod uwagę położenie kursora, stan SHIFT i CTRL itd. Następnie kontrolka widoku listy wysyła okno nadrzędne NM_CLICK (widok listy) kod powiadomienia.
Jeśli przeciąganie rozpoczyna się od elementu, kontrolka widoku listy wybiera i ustawia fokus na element. Następnie wysyła kod powiadomienia LVN_BEGINDRAG do okna nadrzędnego. Okno nadrzędne jest odpowiedzialne za faktyczne przeprowadzenie operacji przeciągania.
Jeśli przeciąganie rozpoczyna się na tle okna, kontrolka widoku listy wprowadza kolejną modalną pętlę komunikatów, umożliwiając użytkownikowi utworzenie prostokąta przez przeciągnięcie myszy. Zaznaczono elementy w obrębie prostokąta.
WM_NCCREATE Przydziela i inicjuje wewnętrzną strukturę danych, a następnie wywołuje funkcję DefWindowProc.
WM_NCDESTROY Zwalnia zasoby przydzielone przez kontrolkę widoku listy. Jeśli nie zostanie użyty styl LVS_SHAREIMAGELISTS, obejmuje to usunięcie pełnych i małych list obrazów.
WM_NOTIFY Przetwarza kody powiadomień kontrolki nagłówka.
WM_PAINT Wyświetla wszystkie elementy w regionie aktualizacji. W przypadku elementów wywołania zwrotnego kontrolka najpierw wysyła kod powiadomienia LVN_GETDISPINFO do okna właściciela w celu żądania wyświetlania informacji. Jeśli parametr wParam jest inny niż NULL, kontrolka przyjmuje, że wartość jest HDC i maluje przy użyciu tego kontekstu urządzenia.
WM_RBUTTONDOWN Przetworzone tak samo jak komunikat WM_LBUTTONDOWN, z tą różnicą, że kontrolka wysyła kod powiadomień NM_RCLICK (widok listy) (zamiast NM_CLICK (widok listy)) i kod powiadomienia LVN_BEGINRDRAG (zamiast LVN_BEGINDRAG). Należy pamiętać, że kontrolka przetwarza odpowiedni komunikat WM_RBUTTONUP i nie wysyła go. W związku z tym aplikacje nie widzą tego komunikatu, nawet przez podklasę kontrolki.
WM_SETFOCUS Przemaluje element listy ukierunkowanej, jeśli istnieje, i wysyła kod powiadomienia NM_SETFOCUS do okna nadrzędnego.
WM_SETFONT Zapisuje określony uchwyt czcionki, przekazuje komunikat do okna nagłówka, jeśli istnieje, i przemaluje przy użyciu nowej czcionki.
WM_SETREDRAW Włącza lub wyłącza ponowne rysowanie.
WM_TIMER Rozpoczyna edytowanie etykiety elementu. Jeśli użytkownik kliknie etykietę elementu ukierunkowanego, kontrolka widoku listy ustawia czasomierz zamiast natychmiast wprowadzać tryb edycji. Czasomierz umożliwia sterowanie widokiem listy, aby nie wprowadzić trybu edycji, jeśli użytkownik kliknie dwukrotnie etykietę.
WM_VSCROLL Przewija kontrolkę widoku listy w pionie.
WM_WINDOWPOSCHANGED Aktualizuje paski przewijania okna. Jeśli bieżący widok jest ikoną lub małym widokiem ikony, a styl LVS_AUTOARRANGE jest określony, kontrolka widok-listy będzie również rozmieszczać elementy listy.
WM_WININICHANGE Przetwarza zmiany metryk systemowych.