Поделиться через


Обработка сообщений представления списка по умолчанию

В этом разделе перечислены операции обработки сообщений окна, выполняемые элементом управления представлением списка.

Обработка сообщений

В следующей таблице описывается обработка сообщений окна, выполняемая элементом управления представлением списка.

Message Обработка выполнена
WM_CHAR Ищет элемент представления списка, начинающийся с указанного символа, и, если элемент найден, выбирает и задает фокус для элемента. Несколько символов, полученных в течение интервала времени ожидания, которые в настоящее время исправлены в одну секунду, объединяются, а элемент управления представлением списка выполняет поиск элемента, начинающегося с результирующей строки.
WM_COMMAND Обрабатывает коды уведомлений EN_UPDATE и EN_KILLFOCUS и пересылает все остальные уведомления об изменении элементов управления в родительское окно.
WM_CREATE Выполняет инициализацию для WM_NCCREATE. Если стиль окна LVS_SHAREIMAGELISTS не указан, элемент управления представлением списка создает значки и списки небольших изображений значков на этом этапе.
WM_DESTROY Освобождает ресурсы, выделенные во время WM_CREATE.
WM_ERASEBKGND Удаляет фон окна с помощью текущего цвета фона для элемента управления представлением списка. Если цвет фона является значением CLR_NONE, элемент управления представления списка перенаправит сообщение в родительское окно.
WM_GETDLGCODE Возвращает сочетание значений DLGC_WANTTAB и DLGC_WANTARROWS.
WM_GETFONT Возвращает дескриптор текущего шрифта метки.
WM_HSCROLL Прокручивает элемент управления представления списка по горизонтали.
WM_KEYDOWN Обрабатывает клавиши ПРОБЕЛ, ВВОД и стрелки и отправляет код уведомления LVN_KEYDOWN в родительское окно.
WM_KILLFOCUS Переопределяет элемент фокусного списка, если он есть, и отправляет код уведомления NM_KILLFOCUS в родительское окно.
WM_LBUTTONDBLCLK Отправляет родительское окно код уведомления NM_DBLCLK (представление списка).
WM_LBUTTONDOWN Обрабатывается различными способами в зависимости от того, инициируется ли операция щелчка или перетаскивания. Чтобы определить, какая операция связана, элемент управления представлением списка вводит модальный цикл сообщений, пока кнопка не будет освобождена или мышь перемещена. В случае нажатия кнопки элемент управления представлением списка может изменить, какой элемент имеет фокус и какие элементы выбраны, учитывая положение курсора, состояние клавиш SHIFT и CTRL и т. д. Затем элемент управления представлением списка отправляет родительский окно код уведомления NM_CLICK (представление списка).
Если перетаскивание начинается по элементу, элемент управления представлением списка выбирает и задает фокус для элемента. Затем он отправляет код уведомления LVN_BEGINDRAG в родительское окно. Родительское окно отвечает за фактические выполнение операции перетаскивания.
Если перетаскивание начинается в фоновом режиме окна, элемент управления "Представление списка" вводит другой модальный цикл сообщений, что позволяет пользователю формировать прямоугольник, перетаскивая мышь. Элементы в прямоугольнике выбраны.
WM_NCCREATE Выделяет и инициализирует внутреннюю структуру данных, а затем вызывает функцию DefWindowProc.
WM_NCDESTROY Освобождает ресурсы, выделенные элементом управления "Представление списка". Если стиль LVS_SHAREIMAGELISTS не используется, это включает удаление полноразмерных и небольших списков изображений.
WM_NOTIFY Обрабатывает коды уведомлений элемента управления заголовками.
WM_PAINT Отображает все элементы в регионе обновления. Для элементов обратного вызова элемент управления сначала отправляет код уведомления LVN_GETDISPINFO в окно владельца, чтобы запросить сведения о отображении. Если параметр wParam не имеет значения NULL, элемент управления предполагает, что значение является HDC и краской с помощью этого контекста устройства.
WM_RBUTTONDOWN Обрабатывается так же, как сообщение WM_LBUTTONDOWN, за исключением того, что элемент управления отправляет код уведомления NM_RCLICK (представление списка) (вместо NM_CLICK (представление списка)) и код уведомления LVN_BEGINRDRAG (вместо LVN_BEGINDRAG). Обратите внимание, что элемент управления обрабатывает соответствующее сообщение WM_RBUTTONUP и не отправляет его. Таким образом, приложения не могут видеть это сообщение, даже подклассив элемент управления.
WM_SETFOCUS Переопределяет элемент фокусного списка, если он есть, и отправляет код уведомления NM_SETFOCUS в родительское окно.
WM_SETFONT Сохраняет указанный дескриптор шрифта, перенаправляет сообщение в окно заголовка, если таковые есть, и переопределяет их с помощью нового шрифта.
WM_SETREDRAW Включает или отключает перерисовку.
WM_TIMER Начинает редактирование метки элемента. Если пользователь щелкает метку фокусируемого элемента, элемент управления представлением списка устанавливает таймер вместо немедленного ввода режима редактирования. Таймер позволяет элементу управления "Представление списка" не вводить режим редактирования, если пользователь дважды щелкает метку.
WM_VSCROLL Прокручивает элемент управления представлением списка по вертикали.
WM_WINDOWPOSCHANGED Обновления полос прокрутки окна. Если текущее представление является значком или небольшим представлением значков, а стиль LVS_AUTOARRANGE указан, элемент управления представлением списка также упорядочит элементы списка.
WM_WININICHANGE Обрабатывает изменения системных метрик.