Для получения текста из простейшего текстового редактора необходимо послать для него сообщение с кодом EM_GETLINE:
char chText[70];// массив символов для хранения строки
WORD cbCount=0;// число символов в строке
cbCount = SendMessage(hEdit, EM_GETLINE, 0, (LPARAM)(LPSTR)chText);
Текст длиной cbCount будет содержаться в стороке chText.
Списки
Эти органы управленияпоказывают на экране список, из которого пользователь может выбирать один или несколько пунктов.
Создаются на основе класса “listbox” или класса “combobox”, который объединяет “edit” и “listbox”.
Рис.11 Два списка
Особенности:
1.Эти списки создаются пустыми и их надо заполнять.
2. combobox создается открытым.
3. Для listbox существует стиль LBS_STANDART – это список сортированный по алфавиту LBS_SORT, с рамкой WS_BORDER, с вертикальной полосой прокрутки WS_VSCROLL и ПОСЫЛАЮЩИЙ родительскому окну сообщения LBS_NOTIFY. По умолчанию сообщения не посылаются.
4. Вариации несколько колонок LBS_MULTICOLUMN, можно выбрать несколько элементов LBS_MULTIPLESEL (не подряд) или LBS_EXTENDEDSEL(подряд).
Коды извещения передаются в WM_COMMAND и показывают, какое действие было совершено над списком.
|
|
wParam – идентификатор органа управления
мл. lParam – идентификатор окна
ст. lParam - коды извещения:
LBN_DBLCLK – двойной щелчок
LBN_SETFOCUS – получен фокус
LBN_KILLFOCUS – потерян фокус
LBN_SELCANCEL – отмена выбора
LBN_SELCHANGE – выбор другой строки
Работа со списками осуществляется через сообщения, с использованием функции SendMessage.
Таблица 18
Управление спискомДействие | |
Добавить строку | SendMessage(hList,LB_ADDSTRING,0,(LPARAM)szString); |
Удалить строку | SendMessage(hList,LB_DELETESTRING, Num, 0L); |
Определить число элементов | nCol= SendMessage(hList, LB_GETCOUNT, 0, 0L); |
Определить номер выбранной строки | nNum= SendMessage(hList, LB_GETCURSEL, 0, 0L); |
Копирование строки в буфер | nCol=SendMessage(hList, LB_GETTEXT, (WPARAM) Num, (LPARAM) szBuf); |
Запрет перерисовки | SendMessage(hList, LB_SETREDRAW, FALSE, 0L); |