Главная » Win32 API » Окно редактирования Edit Box

0

Edit Box это прямоугольное окно предопределенного класса «Edit», в котором можно вводить и редактировать текст с клавиатуры. По умолчанию окно редактирования является однострочным, с авто­матической горизонтальной прокруткой и выравниванием текста по левой границе.

Для окна редактирования введены дополнительные стили, имею­щие префикс ES_:

•            ESAUTOHSCROLL текст автоматически прокручивается вправо на 10 символов, когда пользователь напечатает символ в конце строки. Когда пользователь нажимает клавишу ENTER, текст прокру­чивается в начало;

•            ESAUTOVSCROLL текст автоматически перемещается вверх на одну страницу, когда пользователь нажимает клавишу ENTER на последней строке;

•            ESLEFT текст выравнивается слева.

•            ESLOWERCASE символы преобразуются в нижний ре­гистр;

•            ESMULTILINE окно редактирования является многостро­ковым. Значение по умолчанию одностроковое окно редактирования текста.

•            ESNOHIDESEL выбранный текст инвертируется, даже если панель управления не имеет фокуса;

•            ESNUMBER в поле редактирования можно ввести только цифры;

•            ESPASSWORD вместо каждого символа, введенного с кла­виатуры в окно редактирования, отображается звездочка (*). Вы може­те использовать сообщение EMSETPASSWORDCHAR, чтобы заме­нить символ, который отображается;

•            ESREADONLY запрещается ввод или редактирование тек­ста в окне редактирования;

•            ESRIGHT текст в многострочном окне редактирования вы­равнивается по правому краю;

•            ESUPPERCASE все символы преобразуются в символы верхнего регистра.

Сообщения,  посылаемые  окну редактирования,  имеют префикс ЕМ_. Часто употребляемые сообщения приведены в таблице 3.1.

Таблица 3.1 Сообщения для Edit Box

Код сообщения

Значение wParam

Значение lParam

Назначение

EMSETSEL

Start

End

Выделение текста с по­зиции Start до позиции End

EMGETSEL

адрес Start

адрес End

Получение позиций Start и End выделения

EMGETLINE

Line

Buf

Копирование строки Line в буфер Buf

WMCLEAR

0

0

Удаление выделенного текста

WMCUT

0

0

Удаление выделенного текста и помещение его в буфер обмена Windows

WMCOPY

0

0

Копирование выделен­ного текста в буфер об­мена Windows

WMPASTE

0

0

Вставка текста из буфера обмена Windows в место текущей позиции курсо­ра

WMGETTEXT

max

Buf

Копирование не более чем max символов в бу­фер Buf

WMSETTEXT

0

адрес Line

Копирование из строки Line в редактор

Например, пусть из строки si требуется записать 10 символов в строку редактора с дескриптором hEditl:

invoke SendMessage,hEditl,WM_GETTEXT,10,ADDR si

Отметим, что для посылки сообщения элементу управления вместо SendMessage можно использовать функцию SendDlgltemMessage, па­раметрами которой являются дескриптор родительского окна, иденти­фикатор элемента управления, код сообщения, параметры wParam и IP агат.

От элемента управления EditBox в родительское окно посылаются сообщения WMCOMMAND,  при этом младшее слово  параметра

wParam содержит идентификатор редактора строки, а старшее код события с элементом управления. Параметр IParam содержит дескрип­тор элемента управления. Примеры кодов событий с элементом Edit-Box: ENSETFOCUS/ENKILLFOCUS редактор получил/потерял фокус ввода, ENCHANCE текст в окне редактирования изменился, ENERRSPACE переполнение буфера редактирования.

Так как текстовый редактор обрабатывает клавиатурные сообще­ния, то в цикле обработки сообщений обязателен вызов функции TranslateMessage.

Источник: Сучкова, Л.И. Win32 API: основы программирования: учебное пособие/ Л.И. Сучкова; АлтГТУ им. ИИ. Ползунова. -Барнаул, АлтГТУ, 2010. 138 с, ил.

По теме:

  • Комментарии