Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Рассмотрим стили окон редактирования




Текст в управляющих окнах редактирования может быть выравнен либо по правому краю, либо по правому, либо по центру. Формат можно задать с помощью стилей окна ES_LEFT, ES_RIGHT и ES_CENTER.

По умолчанию в управляющем окне редактирования имеется одна строка. Для создания такого окна с автоматической горизонтальной прокруткой следует добавить стиль ES_AUTOHSCROLL.

Приложение может создать многострочное управляющее окно редактирования, используя стиль окна ES_MULTILINE. Для многострочного окна редактирования, если не задан стиль ES_AUTOHSCROLL, то текст автоматически переносится на новую строку при достижении правого края окна.

При задании стиля ES_AUTOHSCROLL в многострочном редакторе для перехода на новую строку нужно нажимать клавишу <Enter> (т.е. появляется возможность горизонтальной прокрутки). Используя стиль окна ES_AUTOVSCROLL, в многострочное окно редактирования можно включить возможность вертикальной прокрутки.

Если стили ES_AUTOHSCROLL и ES_AUTOVSCROLL включены в многострочные управляющие окна, то можно добавить и сами полосы прокрутки.

Добавление полос прокрутки делается путем использования идентификаторов стиля окна, WS_HSCROLL и WS_VSCROLL.

Чаще всего для многострочных редакторов используется следующая комбинация стилей:

WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_BORDER|

ES_MULTILINE|ES_|ES_AUTOVSCROLL|WS_HSCROLL|WS_VSCROLL

Родительские окна также могут посылать окнам редактирования сообщения

Специфических сообщений, которые родительское окно может послать окну редактирования, достаточно много. Рассмотрим наиболее часто употребляемые:

WM_CUT -для удаления с пересылкой в буфер обмена;

WM_COPY -копирования в буфер обмена;

WM_CLEAR - очищения выделенной части текста из окна редактирования;

WM_PASTE -для вставки текста из буфера обмена в окно редактирования;

EM_GETSEL - для получения начальной и конечной позиции текущего выделения текста;

EM_SETSEL - для выделения некоторого участка текста;

EM_REPLACESEL - для замены текущего выделенного текста другим текстом;

EM_GETLINECOUNT - для получения число строк многострочного редактора;

EM_LINEINDEX - для получения смещения от начала буфера до некоторой строки;

EM_LINELENGTH -для получения длины некоторой строки;

EM_GETLINE- для копирования некоторой строки в буфер программы.

Некоторые методы класса CEdit

Окна редактирования могут работать в режимах однострочного и многострочного редакторов. Приведем сначала методы, общие для обоих режимов, а затем методы для многострочного редактора.

Общие методы


Методы для получения первой и последней позиции выделенного фрагмента текста:

DWORD GetSel() const;

void GetSel(int& nStartChar, int& nEndChar) const;

Для значения типа DWORD младшее слово содержит позицию первого, старшее - последнего символа.

Методы для установки нового выделения текста, задаваемого первым и последним выделенный символ:

void SetSel(DWORD dwSelection, BOOL bNoScroll=FALSE);

или

void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll=FALSE);

Значение FALSE параметра bNoScroll должно отключать перемещение курсора в область видимости.

Метод для замены выделенного фрагмента текста на строку, передаваемую в параметре lpszNewText:

void ReplaceSel(LPCTSTR lpszNewText);

Метод для удаления выделенного фрагмента текста:

void Clear();

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

void Copy();

Метод для переноса выделенного фрагмента текста в буфер обмена Windows (копирует в буфер и удаляет из текста):

void Cut();

Метод для вставки текста из буфера обмена, начиная с позиции, в которой находится курсор:

void Paste();

Метод для отмены последней операции, выполненной редактором:

BOOL Undo();

Если редактор однострочный, возвращается всегда неотрицательное значение, иначе неотрицательное значение возвращается лишь в случае успешной замены.

Метод для определения того, можно ли отменить последнюю операцию редактора:

BOOL CanUndo() const;

Метод для сброса флага undo (он сигнализирует о возможности отмены последней операции редактора), его вызов делает невозможным отмену:

void EmptyUndoBuffer();

Этот флаг сбрасывается автоматически при выполнении методов SetWindowText и SetHandle.

Метод для определения значения флага модификации содержимого окна:

BOOL GetModify() const;

Возвращает неотрицательное значение, если содержимое окна редактирования не модифицировалось. Информация о модификации поддерживается в специальном флаге, обнуляемом при создании окна редактирования и при вызове метода:

Метод для установки или сброса флага модификации (см. предыдущий метод):

void SetModify(BOOL bModified=TRUE);

Флаг сбрасывается при вызове метода с параметром FALSE и устанавливается при модификации содержимого окна редактирования или при вызове SetModify с параметром TRUE.

Метод для установки режима просмотра (bReadOnly=TRUE) или редактирования (bReadOnly=FALSE):

BOOL SetReadOnly(BOOL bReadOnly=TRUE);

Метод для определения символа, который при выводе пароля будет появляться на экране вместо символов, набираемых пользователем:

TCHAR GetPasswordChar() const;

Если такой символ не определен, возвращается 0. Устанавливается этот символ методом (по умолчанию используется "*"):

void SetPasswordChar(TCHAR ch);

Метод для установки максимальной длины (в байтах) текста, который может ввести пользователь:

void LimitText(int nChars=0);

Если значение параметра равно 0, длина текста устанавливается равной UINT_MAX.










Последнее изменение этой страницы: 2018-04-12; просмотров: 277.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...