Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-ТРПС.doc
Скачиваний:
13
Добавлен:
15.11.2018
Размер:
810.5 Кб
Скачать

8.2.10.3. Сообщения от родительского окна к редактору

В первую очередь укажем две универсальные функции, которые позволяют изменить заголовок окна с дескриптором hWnd

SetWindowText(hWnd, szString);

и получить текст заголовка окна hWnd

GetWindowText(hWnd, szString, nString);

Параметр szString для функции SetWindowText() представляет собой константный указатель на строку символов, а для функции GetWindowText() – указатель на буфер длиной nString символов.

Применительно к окну редактирования эти функции позволяют изменить или получить содержимое редактора.

Ниже представлены основные сообщения, с помощью которых родительское окно может управлять редактором. Напомним, что для отправки этих сообщений используется SendDlgItemMessage(), следовательно, редактор может возвращать информацию родительскому окну. Горизонтальная черта отмечает сообщения, относящиеся только к многострочным редакторам.

WM_SETFONT

Установить новый шрифт для элемента управления. Через wParam передается дескриптор нового фонта, а lParam=1, что требует перерисовки элемента.

EM_SETLIMITTEXT

Ограничивает длину текста, вводимого в окно редактора, величиной nMax символов. Параметры сообщения: wParam = nMax; lParam = 0;

EM_GETLIMITTEXT

Возвращает текущую длину ограничения текста. Параметры сообщения: wParam = 0; lParam = 0;

EM_GETSEL

Получить выделенный пользователем текст в окне редактора. Определите две переменные типа DWORD dwStart как позиция начала выделения и dwEnd как конечная позиция. Передайте адреса этих переменных через параметры сообщения:

wParam = (WPARAM)&dwStart; lParam = (LPARAM)&dwEnd;

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

EM_SETSEL

Установить выделение текста. Параметры сообщения: wParam=nStart; lParam=nEnd; где nStart, nEnd - начальная и конечная позиции выделения. Если задать (0) и (-1) соответственно, то выделяется весь текст в редакторе. Если начальная позиция равна (-1), то выделение снимается.

EM_SETREADONLY

Изменить стиль “только для чтения”. Параметры сообщения: wParam=0 или 1; lParam=0;

Если wParam=1 стиль устанавливается, если wParam=0 стиль снимается.

EM_GETPASSWORDCHAR

Возвращает текущий символ-заполнитель для стиля ES_PASSWORD. Параметры сообщения: wParam=0; lParam=0;

EM_SETPASSWORDCHAR

Установить символ-заполнитель для стиля ES_PASSWORD. Параметры сообщения: wParam=ch; lParam=0;

где ch - новый символ-заполнитель.

EM_GETLINECOUNT

Возвращает количество строк в многострочном редакторе. Параметры сообщения: wParam=0; lParam=0;

EM_LINELENGTH

Возвращает длину для i-той строки. Параметры сообщения: wParam=i; lParam=0;

EM_GETLINE

Скопировать i-ю строку редактора в буфер. Параметры сообщения: wParam=i; lParam=szBuff;

где szBuff адрес буфера копирования.

Возвращает длину i-той строки.

Кроме того, для окон редактирования определены сообщения WM_COPY, WM_CUT, WM_PASTE, WM_UNDO, которые сопровождают манипуляции с буфером обмена. Обработчики по умолчанию для этих сообщений обеспечивают полноценную логику операций с буфером, так что в приложениях эти сообщения обрабатываются очень редко.