русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Редактируемые поля


Дата добавления: 2013-12-23; просмотров: 1017; Нарушение авторских прав


Статические органы управления

Для отображения текста или отрисовки оформительских примитивов в окне диалога функции GDI, как правило, не используются. Вместо этого в Windows определен специальный « статический » класс дочерних окон - органов управления.

Органы управления этого класса могут быть созданы указанием функции CreateWindow имени класса «static». Дочерние окна этого типа являются, наверное, самым простым типом окон Windows. Статические органы управления не обрабатывают ни клавиатуру, ни мышь и не посылают сообщение WM_COMMAND функции родительского окна.

Единственное сообщение, которое обрабатывает статические органы управления - это сообщение WM_HITTEST, возвращаемое обратно Windows с установленным параметром HTTRANSPARENT. Это заставляет Windows посылать то же самое сообщение функции нижнего окна, т.е. функции окна диалога, где оно благополучно перерабатывается в сообщение рабочей области так же, как если бы статического органа управления не было вовсе.

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

 

 

Примитив   Определение  
SS_BLACKRECT   SS_GRAYRECT   SS_WHITERECT   SS_BLACKFRAME   SS_GRAYFRAME   SS_WHITEFRAME   SS_CENTER   SS_LEFT   SS_RIGHT   SS_ICON   SS_SIMPLE     SS_USERITEM Прямоугольник цвета рамки окна (COLOR_WINDOWFRAME) Прямоугольник цвета фона окна (COLOR_BACKGROUND) Прямоугольник цвета окна (COLOR_WINDOW)   Рамка цвета рамки окна (COLOR_WINDOWFRAME)   Рамка цвета фона окна (COLOR_BACKGROUND)   Рамка цвета окна (COLOR_WINDOW)   Центрированный текст   Текст, выравненный по левому краю   Текст, выравненный по правому краю   Пиктограмма; функции CreateWindow указывается имя загруженной пиктограммы, не имя файла пиктограммы. Установленная ширина и высота органа управления в этом случае игнорируется; пиктограмма автоматически масштабирует себя по осям То же, что и SS_LEFT, но проще: так, используя этот стиль, нельзя обрабатывать сообщение WM_CTLCOLOR. Статический орган управления, отрисовываемый пользователем

 



 

Стандартный класс «edit» позволяет создать дочернее окно, внутри которого вы можете редактировать какой-либо текст. Когда фокус ввода принадлежит дочернему окну класса «edit» (редактору текста), вы можете набирать в окне текста, перемещать курсор по окну, выделять текст внутри окна при помощи клавиш Shift и клавиш перемещения курсора, перемещать выделенный текст из окна «в почтовый ящик» (clipboard) и обратно.

Используя класс окна «edit», можно создавать как многострочные редакторы текста (оконные редакторы), так и простейшие однострочные органы управления - строки редактирования.

Как и другие органы управления , редактор текста -это дочернее окно , поэтому первый идентификатор, который надо указать в параметре «тип окна » функции CreateWindow, должен быть WS_CHILD.

Текст, отображаемый в окне редактора, может быть выровнен по левой или правой границе окна или же отцентрирован. Для этого существуют следующие флаги типов окон: ES_LEFT,ES_RIGHT, ES_CENTER.

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

Для этого существует тип окна ES_AUTOVSCROLL. По умолчанию редактор текста не имеет рамки, и чтобы не отобразить, используют тип окна WS_BORDER.

Перечислим основные типы органов управления - редактора:

ES_AUTOHSCROLL

Этот стиль вызывает автоматически горизонтальный скроллинг вправо на 10 позиций, если курсор находиться в конце строки. По нажатии клавиши ENTER осуществляется обратный скроллинг на позицию 0.

ES_AUTOVSCROLL

При нажатии клавиши ENTER в конце страницы текст автоматически сдвигается вверх на один экран.

ES_CENTER

Текст автоматически центрируется.

ES_LEFT

Выравнивание текста по левому краю (подбор).

ES_LOWERCASE

Все символы автоматически переводятся в нижний регистр (строчные).

ES_MULTILINE

Этот стиль определяет многострочный редактор текста( по умолчанию определяется простейшая строка ввода). Если указан флаг ES_AUTOVSCROLL , то в окне показывается максимально возможное количество символов, и при нажатии клавиши ENTER в конце страницы текст перемещается на один экран вверх. Если флаг ES_AUTOVSCROLL не указан, то осуществляется автоматический горизонтальный скроллинг на 10 позиций, если курсор находиться в конце строки. По нажатии клавиши ENTER осуществляется обратный скроллинг на позиции 0 (начало новой строки). Если флаг ES_AUTOHSCROLL не указан то осуществляется автоматический перенос на новую строку: при нажатии ENTER, однако, так же начинается новая строка . Граница переноса зависти от ширины окна: если окно изменяет свои размеры, текст как бы «переформатируется». Многострочные редакторы могут иметь полосы просмотра; их сообщения обрабатываются автоматически. Если у многострочного редактора нет полос прокрутки, то он обрабатывает все сообщения о прокрутке, поступающие от родительского окна.

 

ES_NOHIDESEL

По умолчанию окно-редактор убирает выделения при потере фокуса ввода и возвращает его при возврате фокуса ввода. Флаг ES_NOHIDESEL отменяет это свойство.

ES_OEMCONVERT

Вводимый в окно текст сначала преобразуется из таблицы ANSI в таблицу OEM, затем обратно, после чего отображается на экране. Это гарантирует правильный перевод из одной таблицы в другую, например, при указании строки редактирования имени файла DOS.

ES_PASSWORD

Этот стиль предназначен для ввода паролей и кодов: вводимые символы отображаются в виде звездочки (*). Можно отображать и другой символ, для чего следует послать Windows сообщения ЕM_SETPASSWORDCHAR.

ES_RIGHT

Выравнивание текста по правому краю.

ES_UPPERCASE

Все символы автоматически переводятся в верхний регистр(прописные).

 

Сообщения класса «edit»

Редактор текста передает функции родительского окна сообщение WM_COMMAND. В параметре сообщения описаны ниже:

 

Параметр Описание
wParam LOWORD (lParam) HIWORD (lParam)   Идентификатор дочернего окна Индекс дочернего окна Код сообщения

Различные коды сообщений приведены в следующей таблице:

 

Код сообщения   Описание
EN_CHANGE EN_VSCROLL EN_HSCROLL EN_SETFOCUS EN_KILLFOCUS EN_ERRSPACE   Содержимое редактора текста изменено Нажата полоса вертикального просмотра Нажата полоса горизонтального просмотра Редактору текста передали фокус ввода Редактор текста потерял фокус ввода Произошло переполнение буфера редактора текста

 

 

Код сообщения EN_ERRSPACE означает, что редактору текста не хватает отведенной для него памяти . Заметим, что содержимое редактора текста ограниченно 32 килобайтами.

Редактор текста - довольно сложный объект; программа общается с ним как и с другими органами управления, посредством сообщения .
Если надо удалить , скопировать или переместить в «почтовый ящик» выделенный в настоящий момент времени участок текста, то можно предать окно редактора текста сообщение WM_CLEAR,WM_COPY,WM_CUT соответственно:

 

Send Message (hEditWnd,WM_CLEAR,0,0L);

Send Message ( hEditWnd, WM_COPY,0,0L);

Send Message (hEditWnd, WM_CUT,0,OL);

 

Текст из «почтового ящика» можно вставить в текст внутри окна редактора в месте нахождения курсора:

 

SendMessage (hEditWnd, EM_GETSEL,0,0L);

 

Выделить текст внутри окна редактора может либо пользователь при помощи клавиши Shift и клавиш перемещения курсора, либо само приложение, передав окну редактора сообщение EM_SETSEL с параметром lParam, содержащим начальную и конечную позицию выделяемого текста:

 

SendMessage (hEditWid,EM_SETSEL, 0,MAKELONG(wBegin,wEnd));

 

У многострочного редактора текста можно определить число строк:

 

nCount=SendMessage(hEditWnd,EM_ GETLINECOUNT,0,0L);

 



<== предыдущая лекция | следующая лекция ==>
Кнопки и переключатели | Автоматическая обработка клавиатуры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.