BS_RADIOBUTTON - определяет круглую кнопку, которая может быть нажата (внутри окружности жирная точка) и отпущена. Справа от кнопки может быть любой поясняющий текст.
BS_AUTORADIOBUTTON - тоже, что и предыдущее, только при отметке кнопки пользователем ранее сделанная отметка автоматически снимается.
BS_3STATE - тоже, что и BS_CHECKBOX, только добавлено состояние, что действие или свойство не действительно (обозначается штриховкой кнопки).
BS_AUTO3STATE - тоже, что и предыдущее, только смена состояний поддерживается автоматически.
BS_GROUPBOX - определяет рамку, охватывающую другие обьекты диалога.
BS_OWNERDRAW - обьект диалога, определяемый
пользователем, который полностью берет на себя работу с ним.
BS_LEFTTEXT - используется для выравнивания
пояснительного текста по левой стороне кнопок.
Кнопки посылают функции окна родителя сообщение
WM_COMMAND,
в качестве параметра lParam указывается дескрипотор органа
управления и код нотификации, служащий для определения того,
какое действие произвел пользователь с кнопкой.
Статические обьекты диалога
Статические обьекты диалога используются для отображения текста и отрисовки оформительских примитивов. Обьекты этого класса могут быть созданы указанием функции CreateWindow имени класса "static". Определены следующие классы статических обьектов:
SS_LEFT - текст, выравненный по левому краю;
SS_CENTER - центрированный текст;
SS_RIGHT - текст, выравненный по правому краю;
SS_ICON - пиктограмма;
SS_BLACKRECT - прямоугольник цвета рамки фона;
SS_GRAYRECT - прямоугольник цвета фона окна;
SS_WHITERECT - прямоугольник цвета окна;
SS_BLACKFRAME - рамка цвета рамки окна;
SS_GRAYFRAME - рамка цвета фона окна;
SS_WHITEFRAME - рамка цвета окна;
SS_USERITEM - обьект, определяемый пользователем.
Редактор
Редактор "edit" позволяет создать дочернее окно и редактировать в нем текст. По умолчанию редактор может редактировать только одну строку. Типы классов редактора приведены ниже.
ES_LEFT - текст, выравненный по левому краю;
ES_CENTER - центрированный текст;
ES_RIGHT - текст, выравненный по правому краю;
ES_MULTILINE - определяет многостраничный редактор;
ES_UPPERCASE - символы переводятся в верхний регистр;
ES_LOWERCASE - символы переводятся в нижний регистр;
ES_PASSWORD - стиль для ввода паролей;
ES_AUTOHSCROLL - автоскроллинг вправо на 10 позиций,
если курсор находится в конце строки;
ES_AUTOVSCROLL - при нажатии ENTER в конце страницы текст автоматически сдвигается вверх на один экран.
В качестве параметров сообщения WM_COMMAND передаются идентификатор дочернего окна-редактора, индекс дочернего окна и код сообщения. Код сообщения может быть:
EN_SETFOCUS - редактору текста передали фокус ввода;
EN_KILLFOCUS - редактор текста потерял фокус ввода;
EN_CHANGE - содержимое редактора изменено;
EN_ERRSPACE - переполнение буфера редактора;
EN_HSCROLL - нажата клавиша горизонтального просмотра;
EN_VSCROLL - нажата клавиша горизонтального просмотра.
Окно список
Окно список "listbox" представляет собой прямоугольник, внутри которого находится листаемый список из текстовых строк. Пользователь может выделить строки списка при помощи курсора. Окно-список используется для просмотра и выбора элементов древовидного списка. Приведем типы окна списка.
LBS_NOTIFY - родительское окно получает информацию о любом действии пользователя в списке;
LBS_SORT - строки сортируются по алфавиту; LBS_MULTIPLESEL - множественный выбор с переключением
выбора для каждой строки;
LBS_OWNERDRAWFIXED - отображение содержимого списка возлагается на функцию родительского окна, все элементы списка могут иметь разную высоту;
LBS_OWNERDRAWVARIABLE - отображение содержимого списка возлагается на функцию родительского окна, все элементы списка могут иметь разную высоту;
LBS_HASSTRINGS - определяет пользовательское окно-список с произвольными строками;
LBS_USETABSTOPS - символы табуляции заменяются на пробелы;
LBS_MULTICOLUMN - определяет многостолбцовый список; LBS_EXTENDEDSEL - в окне-списке можно делать
множественный выбор с помощью мыши и клавиши Shift.
В качестве параметров сообщения WM_COMMAND передаются идентификатор дочернего окна-редактора, индекс дочернего окна и код сообщения. Код сообщения может быть:
LBN_ERRSPACE - списку не хватает памяти;
LBN_SELCHANGE - изменен выбор элемента;
LBN_DBLCLK - выбор двойным нажатием кнопки мыши.
Комбинированный список
Комбинированный список представляет сроку
редактирования, к которой привешено окно-список. Стандартные
типы обьекта:
CBS_SIMPLE - список отображается все время, и текущее выделение отслеживается среди элементов списка;
CBS_DROPDOWN - то же, что и предыдущее, но список не отображается, пока пользователь на нажмет на левую кнопку мыши;
CBS_DROPDOWNLIST - то же, но строка редактирования заменяется на статическую текстовую строку, ее нельзя редактировать;
CBS_OWNERDRAWFIXED - элементы списка отрисовываются пользователем, их высота одинакова;
CBS_OWNERDRAWVARIABLE - элементы списка отрисовываются пользователем, их высота одинакова;
CBS_AUTOHSCROLL - горизонтальная прокрутка в строке редактирования;
CBS_SORT - сортировка автоматическая элементов списка.
ОБМЕН ДАННЫМИ МЕЖДУ ПРИЛОЖЕНИЯМИ
Средства обмена данными между приложениями
Одним из средств, обеспечивающим программную
совместимость, является механизм обмена данными между
различнами приложениями. Специальный почтовый ящик (clipboard)
Windows позволяет пользователю переносить информацию из одного приложения в другое, не заботясь об ее форматах и представлении.
В отличие от профессиональных операциональных
операционных систем, где механизм обмена данными между программами доступен только программисту, в Windows это делается очень просто и наглядно для пользователя.
Механизм обмена данных между приложениями - жизненно важное свойство многозадачной среды. И в настоящее время
производители программного обеспечения пришли уже к выводу,
что для переноса данных из одного приложения в другое
почтового ящика уже недостаточно. Появился новый, более
универсальныймеханизм - OLE ( Object Linking and Embedding )
- Встроенная объектная связь, который позволяет переносить из одного приложения в другое разнородные данные. Например, с помощью этого механизма данные, подготовленные в системе сетевого планирования Time Line for Windows ( Symantec ), можно переносить в текстовый процессор Just Write ( Symantec ), а затем, скажем, в генератор приложений Object Vision (Borland). Правда, это уже нестандартное средство Microsoft Windows, но тем не менее реализация OLE стала возможной именно в Windows.
Кроме механизма почтового ящика, предназначенного, в основном, для пользователя, программисту в Windows доступны специальные средства обмена данными между приложениями.
Программным путем можно установить прямую связь между задачами, например, принимая данные из последовательного порта, автоматически помещать их, скажем, в ячейки электронной таблицы Excel, средствами которой можно тут же отображать сложные зависимости в виде графиков или осуществлять их обработку в реальном режиме времени (этот механизм носит название динамического обмена данными - Dynamic Data Exchange, DDE ).
Остановимся более подробно на механизме
динамического обмена данными между приложениями.
Динамический обмен между приложениями
Мы обсудим основные идеи работы DDE и использование библиотеки DDE в своих приложениях в следующих разделах:
- Основные термины
- Несколько слов о DDEML
- Взаимодействие Клиента и Сервера
- Транзакции, функция обратного вызова DDE
( CallBack function )
- Service, item и topic имена
- Системный режим
- Инициализация
- Основное назначение и работа функции обратного вызова
- Обработка строк
- Service имена. Регистрация, фильтр
- Диалог между приложениями
- Простой диалог
- Сложный диалог
- Обмен данными между приложениями
- Классы транзакций
- Определение наличия ошибок при динамическом обмене данными.
Основные термины
Клиентское приложение DDE - приложение, которому необходимо установить диалог с сервером и получить данные от сервера в процессе диалога.
DDE-диалог - взаимосвязь между клиентским и серверным приложениями.
Сервер-приложение - DDE приложение, которое передает данные клиенту в процессе диалога.
DDE-Транзакция -обмен сообщениями или данными между клиентом и сервером.
Item имя - строка, идентифицирующая некоторое
множество данных, которое сервер в состоянии передать
клиенту в процессе диалога.
Service имя - строка, генерируемая сервером и
используемая клиентом для установления диалога.
Строковый указатель - двойное слово, генерируемое операционной системой, идентифицирующее строку, передающуюся в процессе динамического обмена данными.
Topic имя - строка, которая идентифицирует тип
данных, необходимых клиентскому приложению при
динамическом обмене данных.
Фильтр транзакции - флаг, который препятствует
передаче нежелательных типов транзакций в функцию
обратного вызова.
Несколько слов о DDEML
В Microsoft Windows динамический обмен данных является формой связи, которая использует общие области памяти для обмена данными между приложениями. Приложение может использовать DDE в некоторый момент времени для передачи и получения новых данных от сервера.
Механизм DDE схож с механизмом почтового ящика, который является частью операционной системы WINDOWS. Существует лишь незначительная разница в том, что почтовый ящик, в большинстве случае, используется как буфер временного хранения информации. DDE может быть инициализирован пользователем и в большинстве случаев продолжать работать без его вмешательства.
Библиотека DDEML обеспечивает пользователя набором средств, которые упрощают использование механизма DDE в WINDOWS приложениях. Вместо того, чтобы обрабатывать, получать и передавать DDE сообщения напрямую, приложения используют функции DDEML библиотеки. Библиотека DDEML также обеспечивает работу со строками и разделяемыми данными, генерируемыми DDE приложениями. Вместо того, чтобы использовать указатели на общие области памяти, DDE приложения создают и обмениваются строковыми указателями, которые идентифицируют строки и данные.