Отобразив окно-список на экране, его надо заполнить текстовыми строками. Для этого надо передать сообщение окну-списку с помощью описанной ранее функции SendMessage. Элемент окна-списка определяется своим индексом. Индекс принимает значение от нуля до числа элементов в списке. Пусть переменная hListWnd определяет окно-список, а wIndex - индекс элемента окна-списка.
Если используется окно-список с автоматической сортировкой, то заранее не известно, какую позицию займет новый элемент. При этом для пассивного добавления элемента списка можно использовать сообщение LB_ADDSTRING:
Когда вы добавляете или удаляете строки в окне-списке, он автоматически перерисовывается на экране с новым содержимым. Если удаляется или добавляется много строк окна-списка, то при помощи сообщения LB_SETREDRAW на некоторое время можно запретить обновление окна-списка:
// запрещаем обновление окна
SendMessage (hListWnd, LB_SETREDRAW, FALSE, 0L);
// изменение содержимого окна-списка
// разрешаем обновление окна
SendMessage (hListWnd, LB_SETREDRAW, TRUE, 0L);
Заметим, что при работе с окном-списком функция SendMessage возвращает одну из следующих величин: LB_ERRSPACE (не достаточно памяти для размещения нового элемента в списке), LB_ERR (при всех остальных ошибок) или LB_OKAY (операция закончилась успешно).
После того, как вы заполнили окно-список, можно определить число элементов, содержащихся в нем:
Приложение может также выделить элемент списка, основываясь на первых символах строки. В следующем вызове функции SendMessage параметр wIndex определяет начальную позицию в окне-списке, начиная с которой будет производиться поиск строки, первые несколько символов которой заданы в строке szSearchString:
Если заданный своими первыми символами элемент обнаружен в списке, то функция SendMessage возвращает индекс найденного элемента. Если искомый элемент не обнаружен, то возвращается величина LB_ERR.
При получении сообщения WM_COMMAND можно определить, какой элемент списка выбран в данный момент:
В обоих примерах приведенных выше, параметр nIndex определяет элемент окна-списка, а nLength длину строки, ему соответствующей. Во втором примере параметр szBuffer является дальним указателем на буфер, в который копируется строка.