Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Рассмотрим стили окон редактирования
Текст в управляющих окнах редактирования может быть выравнен либо по правому краю, либо по правому, либо по центру. Формат можно задать с помощью стилей окна 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |