Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Часть II.doc
Скачиваний:
14
Добавлен:
20.11.2018
Размер:
1.48 Mб
Скачать

2.4.3. Сообщения от редактора текста

Функция окна редактора текста посылает функции родительского ок­на сообщение WM_COMMAND. При этом младшее слово параметра wParam содержит идентификатор, а параметр IParam - дескриптор окна редактора текста. Старшее слово параметра wParam содержит код изве­щения о совершенном действии. В следующей таблице перечислены ко­ды извещений:

Код

Пояснение

EN CHANGE

Текст в окне редактирования изменился

EN ERRSPACE

Недостаточно памяти для выполнения действия

ENHSCROLL

Нажата горизонтальная полоса просмотра редак­тора, но свертка текста еще не произошла

EN KILLFOCUS

Текстовый редактор потерял фокус ввода

EN MAXTEXT

Превышен заданный для редактора размер текста

EN SETFOCUS

Текстовый редактор получил фокус ввода

EN UPDATE

Последняя операция редактирования выполнена, но еще не отразилась на содержимом редактора. За этим извещением после отображения измене­ний придет извещение с кодом EN CHANGE

EN VSCROLL

Нажата вертикальная полоса просмотра редакто­ра, но свертка текста еще не произошла-

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

П 2.5. Списки строк

2.5.1. Создание списка

Списки строк создают на базе класса "listbox". Строки в списке нумерует операционная система, и номер первой строки равен 0. Списки могут быть одноколоночные и многоколоночные; с вертикальной (для одноколоночных списков) и горизонтальной (для многоколоночных спи­сков) полосой просмотра. При создании списка первым аргументом функции CreateWindow является указатель на строку "listbox", а третий аргумент задают с помощью табл. 2.6. Например:

#define ID.LIST 111

hListBox = CreateWidow(“listbox"; NULL, WS CHILD|WS_VlSIBLE|LBS_STANDARDl

LBS_WANTKEYBOARDINPUT, 30,30,200,100, hwnd, (HMENU)ID_LIST,hInst, NULL);

Второй аргумент функции должен быть указан как NULL. Дополни­тельно к стилям окна WS_CHILD и WS_VISIBLE указывают стили спи­ска, имена которых имеют префикс LBS_.

2.5.2. Сообщения от списка

Список со стилем LBS_NOTIFY посылает в функцию родительского окна сообщение WM^COMMAND. При этом младшее слово параметра wParam равно идентификатору списка. Параметр IParam содержит деск­риптор списка. Старшее слово параметра wParam содержит один из сле­дующих кодов извещения:

Код извещения

Описание

LBN_DBLCLK

Двойной щелчок левой клавишей мыши по строке списка

LBN_ERRSPACE

Ошибка при попытке заказать дополнитель­ную память

LBN_KILLFOCUS

Список потерял фокус ввода

LBN_SELCANCEL

Пользователь отменил выбор в списке

LBN_SELCHANGE

Изменился номер выбранной строки

LBN_SETFOCUS

Список получил фокус ввода

2.5.3. Сообщения для списка

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

Код сообщения и значения wParam и IParam

Пояснение

LB ADDSTRING, 0, (LPARAM)lpszStr

Добавить в список строку IpszStr. Воз­вращает номер строки в списке

LB_DELETESTRING,. (WPARAM)nIndex и OL

Удалить строку с номером nindex из списка. Возвращает количество остав­шихся в списке строк

LBDIR, (WPARAM)(UINT)uAttr и (LPARAM)lpszFileSpec

Заполнить список именами дисков, ка­талогов и файлов атрибутов uAttr по шаблону IpszFileSpec из текущего ка­талога. Возвращает номер последнего добавленного в список имени файла

LB_FINDSTRING, (WPARAM)nStart и (LPARAM)lpszStr

Начиная от строки с номером nStart, искать строку с префиксом IpszStr. Возвращает номер найденной строки или код ошибки

LB_FINDSTRINGEXACT, (WPARAM)nStart и (LPARAM)lpszStr

Начиная от строки с номером nStart, искать строку IpszStr. Возвращает но­мер найденной строки или код ошибки

LB_GETCARETINDEX, 0 и OL

Определение номера строки, имеющей фокус ввода. Возвращает номер этой строки или код ошибки

LB_ GETCOUNT,

0 и ol

Определение количества строк в спис­ке. Возвращает количество строк в списке или код ошибки

LB_ GETCURSEL, 0 и OL

Определение номера выделенной стро­ки. Возвращает номер выделенной строки или код ошибки

LB_GETSEL, |(WPARAM)nIndex и OL

Определить, выбрана ли строка с номе­ром nindex. Возвращает положитель­ное число, если строка выбрана, и 0, если не выбрана или код ошибки

LB_GETSELCOUNT, 0 и OL.

Определить количество выбранных строк. Возвращает количество выбран­ных строк или код ошибки

LB_GETSELITEMS, (WPARAM)cI и

(LPARAM)(int FAR *)lpI

Заполнить буфер 1рI размера сI номе­рами выбранных строк. Возвращает количество записанных в буфер номе­ров или код ошибки

LB_GETTEXT, (WPARAM)nIridex и (LPARAM)(hrt FAR *)1рВ

Копировать текст строки с номером nindex в буфер 1рВ, Возвращает длину строки или код ошибки

LBGETTEXTLEN, (WPARAM)nIndex и OL

Определить длину строки с номером nindex. Возвращает длину строки или код ошибки

LB_GETTPOINDEX, 0 и 0L

Определить номер первой отображае­мой строки. Возвращает номер строки или код ошибки

LB_INSERTSTRING, (WPARAM)nIndex и (LPARAM)(int FAR *)lpB

Вставить элемент 1рВ в список под но­мером nindex. Возвращает номер, под которым вставлена строка, или код ошибки

LB RESETCONTENT, 0 и 0L

Удалить все строки из списка. Возвра­щаемое значение: не используется

LB_SELECTSTRING, (WPARAM)nIndexStart и (LPARAM)(int FAR *)lpB

Начиная с позиции nIndexStart, найти и выделить строку с префиксом 1рВ. Возвращает номер найденной строки или код ошибки

LB_SELITEMRANGE (WPARAM)(BOOL)fSelect; MAKELPARAM(wF, wL)

Выделить (fSelect^TRUE) или отме­нить выделение (fSelect= FALSE) строк с номерами от wF до wL. Воз­вращает код ошибки

LB_SETCARETINDEX, (WPARAM)nIndex и MAKELPARAM(fS, 0)

Передать фокус ввода строке с номе­ром nindex. Если fS=TRUE,свертка выполняется до тех пор, пока указан­ная строка не будет видна хотя бы час­тично, если FALSE - до тех пор, пока строка не будет видна полностью. Воз­вращает код ошибки

LB_SETCURSEL, (WPARAM)nIndex и OL

Отменить предыдущий выбор и вы­брать строку с номером nindex. Если nindex равно -1 отменяется выделение всех строк, возвращается значение LBERR, что в данном случае не гово­рит об ошибке. Иначе (nindex не рав­но -1) возвращает код ошибки

LB_SETTOPINDEX, (WPARAM)nIndex и OL

Свертка списка до тех пор, пока строка с номером nindex не станет видимой. Возвращает код ошибки