скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Windows

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

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

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

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             имя  - строка,                       идентифицирующая               некоторое

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


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.