русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Заполнение окна-списка

Отобразив окно-список на экране, его надо заполнить текстовыми строками. Для этого надо передать сообщение окну-списку с помощью описанной ранее функции SendMessage. Элемент окна-списка определяется своим индексом. Индекс принимает значение от нуля до числа элементов в списке. Пусть переменная hListWnd определяет окно-список, а wIndex - индекс элемента окна-списка.

Если используется окно-список с автоматической сортировкой, то заранее не известно, какую позицию займет новый элемент. При этом для пассивного добавления элемента списка можно использовать сообщение LB_ADDSTRING:

SendMessage (hListWnd, LB_ADDSTRING, 0, (LONG) szString);

Параметр lParam передаваемого сообщения содержит дальний указатель на строку, добавляемую к списку.

Отметим, что если в списке сортировка отключена, то сообщение LB_INSERTSTRING, которому указывается индекс нового элемента wIndex:

SendMessage (hListWnd, LB_INSERTSTRING, wIndex, (LONG) szString);

При этом все элементы, расположенные ниже вставляемого элемента, смещаются вниз на одну позицию.

Можно очистить все окно-список, передав ему сообщение LB_RESETCONTENT:

SendMessage (hListWnd, LB_RESETCONTENT, 0, 0L);

Элемент с индексом wIndex можно также удалить из окна-списка, передав окну сообщение LB_DELETESTRING:

SendMessage (hListWnd, LB_DELETESTRING, wIndex, 0L);

Когда вы добавляете или удаляете строки в окне-списке, он автоматически перерисовывается на экране с новым содержимым. Если удаляется или добавляется много строк окна-списка, то при помощи сообщения LB_SETREDRAW на некоторое время можно запретить обновление окна-списка:

// запрещаем обновление окна

SendMessage (hListWnd, LB_SETREDRAW, FALSE, 0L);

// изменение содержимого окна-списка

// разрешаем обновление окна

SendMessage (hListWnd, LB_SETREDRAW, TRUE, 0L);

Заметим, что при работе с окном-списком функция SendMessage возвращает одну из следующих величин: LB_ERRSPACE (не достаточно памяти для размещения нового элемента в списке), LB_ERR (при всех остальных ошибок) или LB_OKAY (операция закончилась успешно).

После того, как вы заполнили окно-список, можно определить число элементов, содержащихся в нем:

nCount = (WORD) SendMessage (hListWnd, LB_GETCOUNT, 0,0L);

Приложение может также выделить элемент списка, основываясь на первых символах строки. В следующем вызове функции SendMessage параметр wIndex определяет начальную позицию в окне-списке, начиная с которой будет производиться поиск строки, первые несколько символов которой заданы в строке szSearchString:

wIndex = (WORD) SendMessage (hListWnd, LB_SELECTSTRING, wIndex, (LONG) szSearchString);

Если заданный своими первыми символами элемент обнаружен в списке, то функция SendMessage возвращает индекс найденного элемента. Если искомый элемент не обнаружен, то возвращается величина LB_ERR.

При получении сообщения WM_COMMAND можно определить, какой элемент списка выбран в данный момент:

nIndex = (WORD) SendMessage (hListWnd, LB_GETCURSEL, 0, 0L);

Если в данный момент нет выделенных элементов, то переменная nIndex равна LB_ERR.

Чтобы определить длину строки, заданной индексом элемента, передайте окну-списку сообщение LB_GETTEXTLEN:

nLength = (WORD) SendMessage (hListWnd, LB_GETTEXTLEN, nIndex, 0L);

Если вам надо скопировать строку из окна-списка в буфер, используйте сообщение LB_GETTEXT:

nLength = (WORD) SendMessage (hListWnd, LB_GETTEXT, nIndex, (LONG) szBuffer);

В обоих примерах приведенных выше, параметр nIndex определяет элемент окна-списка, а nLength длину строки, ему соответствующей. Во втором примере параметр szBuffer является дальним указателем на буфер, в который копируется строка.

Просмотров: 475


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.