Клас EDIT

Розміщення наскрізного посилання

Є віконцем для введення користувачем якого-небудь рядка. Вбудована можливість використання буфера обміну (вставка, видалення, компіювання тощо) Батьківське вікно компонента з таким класом може отримувати повідомлення WM_COMMAND, параметри якого несуть у собі інші "під-повідомлення" (про них пізніше). Природно, що повідомлення надсилається функціями SendMessage, для посилки повідомлень "нормальному" вікну, і SendDlgItemMessage, для посилки діалоговому вікну від вікна-батька. Компонент класу EDIT може бути як однорядковим, так і багаторядковим, все залежить задає у функціях CreateWindow або CreateWindowEx. Щоб зробити можливість роботи з багаторядковим текстом потрібно використовувати стиль ES_MULTILINE, де можна контролювати вирівнювання тексту стилями ES_LEFT, ES_CENTER, і ES_RIGHT.

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_LINELENGTH-повертає кількість символів у певній. рядку без урахування символів перекладу каретки.

Для цього також існує три способи: EM_GETFIRSTVISIBLELINE -Виводить індекс першого видимого рядка. EM_GETLINE-виводить рядок з індексом (перший рядок має індекс 0). WM_GETTEXT-повертає багаторядковий текст.

Для того, щоб використовувати EM_GETLINE у циклі, потрібно дізнатись кількість рядків, що робиться за допомогою повідомлення EM_GETLINECOUNT. Для отримання індексу певного рядка використовуйте повідомлення EM_LINEINDEX. Щоб знайти рядок з певним символом, надсилайте компоненту EM_LINEFROMCHAR. Інші менш значущі повідомлення ви можете подивитися тут.