| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
Класс EDIT Содержание О классе EDIT Представляет собой окошко для ввода пользователем какой-нибудь строки. Встроена возможность использования буфера обмена (вставка, удаление, компирование и т. д.) Родительское окно компонента с таким классом может получать сообщение WM_COMMAND, параметры которого несут в себе другие "под-сообщения" (о них попозже). Естественно, что сообщение посылается функциями SendMessage, для посылки сообщений "нормальному" окну, и SendDlgItemMessage, для посылки диалоговому окну от окна-родителя. Когда ОС создает элемент EDIT, она автоматом создает текстовый буфер подключенный к этому элементу.Размер буфера устанавливается в 32 KB? Эта же цифра является максимально допустимым размером для однострочного элемента класса EDIT. Для многострочного-64KB Размер буфера может быть изменен (непревышая максимально допустимые значения), для этого следует послать компоненту класса EDIT сообщение EM_SETLIMITTEXT-установить размер буфера и EM_GETLIMITTEXT- чтобы получить текущий размер. Но ОС может сама вам сообщить о переполнение буфера, она посылает вашему приложению сообщение WM_COMMAND, где старший байт wParam содержит сообщение EN_ERRSPACE, а младший байт содержит индентификатор (Внимание не указатель!!!). Указатель на компонент класса EDIT содержится в lParam. Windows позволяет изменить превычный режим отображения этого компонента, это делается посылкой ему трех сообщений:EM_SETRECT- устанавливает новое изображение (здесь используется структура RECT, о создании которой программист должен заранее позаботиться), EM_GETRECT-возвращает текущий режим, EM_SETRECTNP-устанавливает без перерисовки. Программист может узнать какой текст выделен в данный момент в компоненте. Опять же, для этого нужно всего лишь послать ему соответствующеи сообщения: EM_GETSEL-возвращает начальную и конечную позиции выделенного, EM_GETSEL -устанавливает начальную и конечную позиции выделенного, EM_REPLACESEL-заменяет выделенный тест. Так же программист может программным путем вырезать, копировать или вставить текст, используя следующие сообщения:WM_COPY(копировать), WM_CUT (вырезать), WM_PASTE (вставить) и WM_CLEAR (очистка). так же к этому компоненту привязаны флаги, отвечающие за изменения текста в нем. Чтобы узнать состояния флагов, нужно послать компоненту сообщение EM_GETMODIFY, чтоб изменить - EM_SETMODIFY Операции над строками компонента Естественно, что в большенстве случаев компонент класса EDIT создается с целью предоставления пользователью возможности ввода и редактирования текста. Но по совершению какого-либо действия этот тест надо будет получить. Здесь как раз я и хотел бы рассмотреть сообщения, посылая которые программист может получать информацию о тексте. Длина строки WM_GETTEXTLENGTH - сообщение, посылаемое компоненту, когда нужно получить длину всего текста (не определенной строки!!!!). Если компонент класса EDITсоздавался многострочным, то это сообщение вернет количество символов во всем многострочном тексте (включая символы перевода каретки (это последовательность байт #13#10 по ASCII)) Получение строки Для этого так же существует три способа: Остальные функции Для того, чтобы использовать EM_GETLINE в цикле, нужно узнать количество строк, что делается с помощью сообщения EM_GETLINECOUNT. Для получения индекса определенной строки используйте сообщение EM_LINEINDEX. Чтобы найти строку с определенным символом посылайте компоненту EM_LINEFROMCHAR. Другие, менее значимые сообщения вы можете посмотреть тут. Здесь описаны сообщения, которые посылаются вашему приложению, когда с компонентом класса EDIT происходят какие-либо действия. Хочу заметить, что эти сообщения присылаются не в явном виде (например ка WM_CLOSE), а являются параметром сообщения WM_COMMAND, поэтому, чтобы обработать такое сообщение, нужно: 1) принять сообщение WM_COMMAND
|
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|