Обработка сообщений представления списка по умолчанию
В этом разделе перечислены операции обработки сообщений окна, выполняемые элементом управления представлением списка.
Обработка сообщений
В следующей таблице описывается обработка сообщений окна, выполняемая элементом управления представлением списка.
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 | Обрабатывает изменения системных метрик. |