РЕДАКТИРАНЕ на клас
Поставяне на кръстосани връзки
Това е прозорец, в който потребителят може да въведе низ. Възможността за използване на клипборда (вмъкване, изтриване, компилиране и т.н.) е вградена. Родителският прозорец на компонент с този клас може да получи съобщение 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 на компонента. Други, по-малко значими съобщения можете да видите тук.