Создание органа управления Rich Edit
Орган управления Rich Edit создается на базе предопределенного класса окна "RICHEDIT " при помощи функции CreateWindowEx или CreateWindow, как и многие другие описанные нами в этом томе органы управления.
Однако перед тем как создать окно, необходимо загрузить в память DLL-библиотеку RICHED32.DLL , в которой находятся все необходимые функции. Это можно сделать при помощи функции LoadLibrary :
HINSTANCE hRTFLib; hRTFLib = LoadLibrary("RICHED32.DLL");
О том, что такое DLL-библиотеки, вы уже знаете из 13 тома "Библиотеки системного программиста". Там же была описана и функция LoadLibrary.
После загрузки библиотеки можно создавать окно органа управления Rich Edit:
hwndEdit = CreateWindowEx(0L, "RICHEDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER | WS_HSCROLL | WS_VSCROLL | ES_NOHIDESEL | ES_AUTOVSCROLL | ES_MULTILINE | ES_SAVESEL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hWnd, (HMENU)IDC_RTFEDIT, hInst, NULL);
Для окна органа управления Rich Edit вы можете использовать следующие дополнительные стили окна:
Стиль | Описание |
ES_DISABLENOSCROLL | Когда полосы просмотра ненужны, они не удаляются, а изображаются в заблокированном состоянии |
ES_NOIME | Запрещение работы редактора методов ввода (нужно только для работы с азиатскими языками) |
ES_SAVESEL | Когда орган управления Rich Edit теряет фокус ввода, сохраняется выделение символов, выполненное пользователем. Если вы не укажите этот стиль, после повторного получения фокуса орган управления выделит весь имеющийся в его окне текст (что не всегда удобно) |
ES_SELFIME | Разрешение работы редактора методов ввода (нужно только для работы с азиатскими языками) |
ES_SUNKEN | Окно органа управления Rich Edit выглядит как углубленное в поверхность родительского окна |
ES_VERTICAL | Рисование в вертикальном направлении (нужно только для работы с азиатскими языками) |
Кроме перечисленных выше стилей вы можете использовать следующие стили, определенные для обычного органа управления Edit:
Стиль | Описание |
ES_AUTOHSCROLL | Выполняется автоматическая свертка текста по горизонтали. Когда при наборе текста достигается правая граница окна ввода, весь текст сдвигается влево на 10 символов |
ES_AUTOVSCROLL | Выполняется автоматическая свертка текста по вертикали. Когда при наборе текста достигается нижняя граница окна ввода, весь текст сдвигается вверх на одну строку |
ES_CENTER | Центровка строк по горизонтали в многострочном текстовом редакторе |
ES_LEFT | Выравнивание текста по левой границе окна редактирования |
ES_MULTILINE | Создается многострочный редактор текста |
ES_NOHIDESEL | Если редактор текста теряет фокус ввода, при использовании данного стиля выделенный ранее фрагмент текста отображается в инверсном цвете. Если этот стиль не указан, при потере фокуса ввода выделение фрагмента пропадает и появляется вновь только тогда, когда редактор текста вновь получает фокус ввода |
ES_READONLY | Создаваемый орган управления предназначен только для просмотра текста, но не для редактирования |
ES_WANTRETURN | Стиль используется в комбинации со стилем ES_MULTILINE. Используется только в диалоговых панелях. При использовании этого стиля клавиша <Enter> действует аналогично кнопке диалоговой панели, выбранной по умолчанию |
ES_RIGHT | Выравнивание текста по правой границе окна редактирования |
Стиль, который нельзя использовать для органа управления Rich Edit | Описание |
ES_LOWERCASE | Выполняется автоматическое преобразование введенных символов в строчные |
ES_OEMCONVERT | Выполняется автоматическое преобразование кодировки введенных символов из ANSI в OEM и обратно. Обычно используется для ввода имен файлов |
ES_PASSWORD | Этот стиль используется для ввода паролей или аналогичной информации. Вместо введенных символов отображается символ "*" или другой, указанный при помощи сообщения EM_SETPASSWORDCHAR |
ES_UPPERCASE | Выполняется автоматическое преобразование введенных символов в заглавные |