на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Windows


Для обновления окна используется функция UpdateWindow. Ее прототип выглядит так:

void FAR PASCAL UpdateWindow( HWND wnd );

Типы окна

Тип окна задается 32-битовым целым числом, которое представляет собой комбинацию битовых флагов, определяющих различные свойства окна.

WS_OVERLAPPED - перекрывающееся окно. Перекрывающиеся окна - это основной наиболее универсальный тип окон Windows. Главное окно приложения обычно имеет такой вид.

WS_POPUP - вспомогательные окна. Они используются чаще всего для отображения окон диалога. Вот некоторые свойства вспомогательных окон:

- если такое окно имеет родительское окно, то всегда отображаются поверх всех окон на экране, даже когда пользователь делает активным другое окно;

- вспомогательные окна не имеют заголовка и часто должны иметь фиксированный размер.

WS_CHILD - дочернее окно. Окна такого типа создаются, если у приложения есть главное (а значит и перекрывающее окно) и связаны некоторыми характеристиками с тем окном из которого были вызваны. Все органы управления также являются дочерними окнами. Вот некоторые их свойства:

- дочерние окна никогда не отображаются вне своего родительского окна ни в раскрытом виде, ни в виде пиктограммы;

- координаты дочерних окон отчитываются от верхнего левого угла рабочей области окна-родителя и при перемещении последнего, дочерние окна перемещаются вместе с ним;

- дочернее окно никогда не может стать активным окном.

WS_MINIMIZE - создаваемое окно будет отображено в виде пиктограммы.

WS_VISIBLE - Окно становится видимым сразу после создания. Используется для диалоговых окон.

WS_DISABLED - создается неактивное окно.

WS_CLIPSIBLINGS -                исключение   областей,   занимаемых

другими дочерними окнами из изменяемой области дочернего окна.

Используется только для дочерних окон.

WS_CLIPCHILDREN -   исключение   областей,                                занимаемых

другими дочерними   окнами   при   изменении  рабочей  области

родительского окна. Используется только для родительских окон.

WS_MAXIMIZE - создаваемое окно будет отображено в максимально возможном виде.

WS_CAPTION - окно имеет рамку и заголовок, а следовательно пользователь может перемещать его при помощи мыши.

WS_BORDER - окно имеет широкую рамку без заголовка. Используется при создании диалоговых окон.

WS_DLGFRAME - окно имеет тонкую рамку без заголовка.

WS_VSCROLL - окно имеет вертикальную полосу просмотра.

WS_HSCROLL - окно имеет горизонтальную полосу просмотра.

WS_SYSMENU - окно имеет системное меню.

WS_THICKFRAME - создаваемое окно имеет рамку существенно заметной толщины.

WS_MINIMIZEBOX - окно имеет кнопку минимизации.

WS_MAXIMIZEBOX - окно имеет кнопку максимизации.

Построение меню

Для создания меню нужно проделать:

1. Задать                 структуру               меню           в           файле   ресурсов,

последовательно определив пункты меню в виде текстовых строк.

2. Каждому  пункту   меню   поставить   в   соответствие

уникальный идентификатор.

3. Указать имя меню в структуре класса окна.

Определение меню

Определение меню в файле ресурсов должно иметь вид:

MenuName MENU [опции загрузки][опции памяти]

BEGIN

MENUITEM  "Item1"   IDM_Item1  [, опции]

MENUITEM  "Item2"   IDM_Item3  [, опции]

...

POPUP              "Item3"  [, опции]

BEGIN

MENUITEM "Item3-1" IDM_Item3-1 [, опции] MENUITEM "Item3-2" IDM_Item3-2 [, опции] ...

END

END

MenuName - имя ресурса меню для обращения из подпрограммы.

Опции загрузки определяет как следует поступить с ресурсом при загрузке приложения на выполнение - сразу загрузить или при неоходимости.

Опции памяти определяют, как Windows должна обращаться с сегментом памяти, куда загружается ресурс.

Пункты меню определяются между словами BEGIN и END. Они могут быть двух видов: MENUITEM и POPUP. Пункт типа MENUITEM является конечным пунктом меню. При выборе этого пункта функции окна сообщения передается сообщение WM_COMMAND с идентификатором пункта меню в качестве параметра. Пункт типа POPUP является заголовком подменю.

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

GRAYED - пункт меню не активен. Текст пункта меню отображается в сером цвете.

INACTIVE - пункт меню не активен. Текст пункта меню отображается также как и в других пунктах.

MENUBREAK - этот и следующий за ним пункты меню отображаются в новом столбце (если указан для главного меню, то в новой строке).

MENUBARBREAK - этот и следующий за ним пункты меню отображаются в новом столбце (если указан для главного меню, то в новой строке); предыдущий и новый столбец разделяются вертикальной чертой.

CHECKED - пункт меню помечен галочкой, помещенной слева от него. Не действует для пунктов главного меню.

SEPARATOR - определяет разделитель, который выделяет в группы связанные списки меню.

HELP - пункт меню выравнивается по правой стороне меню.

Обьекты диалога

Обьекты диалога, в состав которых входят кнопки, комбинированные блоки, элементы управления редактированием, блоки списков, полосы прокрутки, статические элементы, являются с точки зрения Windows обычными дочерними окнами.

Взаимодействие между родительским окном (окном диалога) и обьектами диалога осуществляется посредством сообщений. Когда пользователь производит какое-либо действие с обьектом диалога, функции окна родителя передается сообщение WM_COMMAND, в качестве параметра wParam которого передается индекс обьекта диалога, а в качестве параметра lParam - специальная дополнительная информация.

Для того, чтобы сконструировать обьект диалога нужно:

1. Зарегистрировать класс окна диалога.

2. Создать дочернее окно функцией CreateWindow, указав зарегистрированный класс окна.

3. В функции окна обьекта диалога определить дескриптор дочернего окна при помощи функции GetParent.

4. По тому или иному действию пользователя уведомлять родительское окно соответствующими сообщениями при помощи функции SendMessage.

Для обьектов диалога как дочерних окон не требуется регистрировать класс окна - в Windows определены стандартные классы окон - обьектов диалога: "button", "edit", "scrollbar", "listbox" и пр.

При использовании стандартных классов Windows для создания обьекта диалога нужно вызвать только функцию CreateWindow.

Рассмотрим основные обьекты диалога.

Кнопки и переключатели

Кнопка "Button" обычно используется для осуществления каких - либо немедленных действий, без переключения или включения/выключения каких-либо опций.

Переключатель "И"                   ("CheckBox")                 используется                 как

переключатель опций  вкл/выкл.  Будучи  соединенными  в группу

переключатели реализуют логику "И".

Переключатель "ИЛИ" ("RadioButton") используется как переключатель опций вкл/выкл. Будучи соединенными в группу переключатели реализуют логику "ИЛИ".

Вокруг этих трех основных типов имеются некоторые вариации. Ниже приводится описание стандартных классов кнопок

и переключателей.

BS_PUSHBUTTON -  определяет  кнопку  с  жирной   рамкой.

BS_DEFPUSHBUTTON - определяет кнопку с жирной рамкой. Обычно используется для определения действия по умолчанию.

BS_CHECKBOX -           определяет   квадратик,   имеющий   два

состояния: отмеченное (перечеркнут крестиком) и не  отмеченное

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

жирной линией.

BS_AUTOCHECKBOX - тоже, что предыдущий, только состояние кнопки при отметке отслеживается автоматически.

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 приложения создают и обмениваются строковыми указателями, которые идентифицируют строки и данные.

Уже существующие приложения, использующие протокол DDE, основанный на сообщениях полностью совместимы с теми, которые используют библиотеку DDEML. Вот почему приложение, использующее DDE-протокол могут установить диалог и выполнять транзакции с приложениями, использующими библиотеку DDEML.

Взаимосвязь между клиентом и сервером.

DDE возникает всегда между клиентским приложением и серверным. Клиентское приложение инициализирует обмен данными путем установления диалога с сервером и передачи транзакции. Транзакция необходима для данных и обслуживания. Сервер отвечает на транзакцию и обеспечивает клиента данными. Сервер может иметь сразу несколько клиентов в одно и тоже время, в свою очередь, клиент может получать данные сразу от нескольких серверов. Некоторое приложение одновременно может быть и клиентом и сервером. В добавок к вышесказанному, клиент и сервер могут оборвать диалог в любое удобное для них время.

Транзакции, функция обратного вызова DDE

( CallBack function )

DDEML информирует приложение об активности DDE путем передачи транзакции в функцию обратного вызова данного приложения. DDE транзакция схожа с обыкновенным сообщением - это именованная константа, сопровождаемая другими параметрами, которые содержат дополнительную информацию о текущей транзакции.

DDEML передает транзакцию в функцию обратного вызова приложения, которая выполняет некоторое действие согласно типу и виду транзакции. Например, когда клиентское приложение пытается установить дилог с сервером, клиент вызывает функцию DdeConnect. Это означает, что DDEML должна послать транзакцию XTYP_CONNECT в функцию обратного вызова сервера. Функция обратного вызова может позволять или не позволять установку диалога, возвращая TRUE или FALSE DDEML.

Вспомогательные имена и другие названия

DDE сервер использует три зарезервированных типа имен, расположенных иерархично: service, topic item - уникально идентифицируют некоторое множество данных, которое сервер может передать клиенту в процессе диалога.

Service имя - это строка, которую генерирует сервер в те промежутки времени, в которые клиент может установить диалог с сервером.

Topic имя - это строка, которая идентифицирует логический контекст данных. Для сервера, который манипулирует файлами, topic имена это просто названия

файлов;   для  других  серверов  -  это  специфические  имена

конкретного                приложения.                Клиент             обязательно                должен

указывать  topic  имя  вместе  с  service  именем,  когда  он

хочет установить диалог с сервером.

Item имя - это строка, которая идентифицирует некоторое множество данных, которое сервер может передать клиенту в процессе транзакции. Например, item имя может идентифицировать ЦЕЛОЕ ( int, integer ), СТРОКУ ( string, char * ), несколько параграфов текста, или BITMAP образ.

Все              вышеуказанные                 имена            позволяют              клиенту

установить диалог с сервером и получить от него данные.

Системный режим

Системный режим работы обеспечивает клиента всей необходимой информцией о сервере.

Для того, чтобы определить, какие серверы доступны в данный момент времени, а также какой информацией они могут обеспечить клиента, последний, находясь в начальном режиме работы, должен установить имя устройства, равное NULL. Такой шаблон диалога максимально увеличивает эффективность работы, а также работу с сервером в системном режиме. Сервер, в свою очередь, должен поддерживать нижеописанные item имена, а также другие, часто используемые клиентом:

SZDDESYS ITEM TOPICS - список item имен, с которыми может работать сервер в данный момент времени. Этот список может изменяться время от времени.

SZDDESYS ITEM SYSITEMS - список item имен, с которыми может работать сервер в системном режиме.

SZDDDESYS ITEM STATUS - запросить текущий статус сервера. Обычно, данный запрос поддерживается только в формате CF_TEXT и содержит строку типа Готов/Занят.

SZDDE          ITEM          ITEMLIST            -            список   item   имен,

поддерживаемых  сервером  в  несистемном  режиме работы. Этот

список может меняться время от времени.

SZDDESYS             ITEM             FORMATS            -            список              строк,

представляющий  собой  список  всех форматов почтового ящика,

поддерживаемых   сервером   в   данном   диалоге.   Например,

CF_TEXT формат представлен строкой TEXT.

Инициализация

Перед вызовом любой функции DDEML, приложение должно вызвать функцию DdeInitialize. Эта функция получает идентификатор копии данного приложения, регистрирует функцию обратного вызова приложения посредством DDEML и указывает флаг фильтра транзакции для функции обратного вызова.

Страницы: 1, 2, 3, 4


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.