LEKCII (Лекции)
Описание файла
Файл "LEKCII" внутри архива находится в папке "Лекции". Документ из архива "Лекции", который расположен в категории "". Всё это находится в предмете "api windows" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "api windows" в общих файлах.
Онлайн просмотр документа "LEKCII"
Текст из документа "LEKCII"
Программирование в среде WINDOWS. 1
Графические функции GDI и средства GDI 2
Аппаратная независимость 3
Схема процесса создания Windows программы. 4
Файл определения модуля. 5
Сообщения. 6
Окна 8
Меню. 20
Диалоговые панели 34
Органы управления 45
Контекст. 67
Логическая и физическая системы координат...................................................................................................84
Рисование…………………………………………………………………………………………….……...………99
Программирование в среде WINDOWS.
Введение.
Вся внутренняя деятельность системы Windows в значительной степени базируется на трех подсистемах:
системе графического приборного интерфейса;
системе обеспечения многозадачного режима;
системе обеспечения аппаратной независимости.
Эти системы предъявляют определенные требования к форме и содержанию программ, работающих под Windows. Невыполнение таких требований ведёт к неправильному функционированию программы, зачастую и к нарушению работы всей системы Windows. Поэтому следует кратко остановиться на принципах работы каждой из этих систем.
Графический Приборный Интерфейс.
Графический приборный интерфейс, или GDI (Graphics Device Interf/асе), является связующим звеном между программой и графическим устройством вывода и служит для представлении программой визуально ориентированной информации пользователю. GDI представляет собой библиотеку процедур, которые обеспечивают создание графического интерфейса и управление им. Эта библиотека доступна как для Windows так и для любой прикладной программы.
Display Context.
Функции GDI работают с различными устройствами ввода. При этом имеется необходимость хранения большого количества информации о данном устройстве вывода, его состоянии, а также о текущих графических средствах, используемых программой. Вся эта информация хранится в специально организованной структуре данных, которая называется dispaly context или device context.
Использование DC обусловлено следующими причинами. Прежде .всего, в каждый конкретный момент времени используется лишь небольшая часть возможностей, Рассмотрим качестве примера рисование прямоугольника. Для того чтобы полностью контролировать представление прямоугольника на охране, следует определить его положение в окне. Нужно также определить цвет и границы прямоугольника. Далее программист может пожелать переопределить вид границы (например, сделать ее непрерывной или пунктирной линией). Дополнительно следует определить, валяется ли прямоугольник закрашенным и если да, то каким цветом. И, наконец, программа должна управлять взаимодействием прямоугольника с уже существующими ив экране рисунками.
Вес графические средства в Windows являются немодифицируемыми, прикладная программа не может полностью заменить тот или иной объект в DC во другой. Поскольку несколько программ могут одновременно использовать одни и те же графические средства, система не допускает их изменения и гарантирует каждой программе постоянство используемых графических средств ресурсов.
Очень важными являются понятия отсекание.
В системе Windows для любого открытого на экране окна существует вероятность соседства (или даже перекрали») с одним или несколькими окнами. GDI управляет своими функциями таким образом, чтобы не допустить графического вывода вне границ окна, которое использует функции GDI. Более того, GDI обеспечивает графический вывод в пределах рабочей области окна, чтобы не нарушить графические объекты нерабочей области. Такой подход и называется отсеканием. Действие функций графического вывода ограничено областью отсекания. Windows устанавливает параметры области отсекания перед передачей его прикладной программе. Как уже отмечалось, в Windows для программы имеются две возможности получения доступа к DC: функции BeginPalnt и GeiDC. При использовании функции BeginPaiot размеры области отсекания устанавливаются так, чтобы содержать именно тот участок рабочей области окна, который должен быть обновлен. В случае использования функции GetDC область отсекания охватывает всю рабочую область окна. Программа может использовать функции GDI для изменения размеров области отсекания, но она не в состоянии сделать область отсекания больше видимой части рабочей области окна. Таким образом, Windows охраняет множественные окна от вмешательства в дела (т.е. рабочие области) друг друга.
Хотя Windows самостоятельно проводит всю работу, связанную с изменением размеров окна, программа может реагировать на увеличение или уменьшение размеров окна по-разному. Эта разница в реакции программы на изменение размеров окна называется, масштабированием.
Возможность масштабирования является необходимой для Windows, поскольку позволяет использовать одни и тс же графические функции, независимо от размеров окна.
В Window существуют 8 методов (режимов) масштабирования.
Графические функции GDI и средства GDI
Графические функции GDI включают в себя следующие функции: определение положения внутри рабочей области, операции с единичными точками экрана, рисование текста, линии и фигур, заполнение фигур и областей, манипулирование битовыми массивами и рисование пиктограмм в рабочей области.
Следует отмстить, что все графические функции GDI в той или иной мере используют графические средства, или ресурсы, имеющиеся а Windows. Windows располагает определенным набором предопределенных графических средств, которые могут быть использованы в программе (например, перо для рисования черной непрерывной линии или системный шрифт). Кроме того, программист может создавать с помощью функций Windows и специальных программ свои собственные графические средства, например, шрифты. Но, независимо от источника возникновения, все графические средства должны находиться в DC, чтобы графические функции GDI могли их использовать. В DC имеется возможность хранения только одного экземпляра каждого графического средства.
Управление памятью и процессорным временем.
Подсистема управления программами не обеспечивает квантования времени между приложениями Windows. Приложения Windows сделаны таким образом, что они сами "добровольно" отдают друг другу процессорное время, обеспечивая так называемую невытесняющую мультизадачность (nonpreemptive multitasking), используя аппарат сообщений. Windows NT создает отдельную виртуальную машину. Благодаря этому приложения Windows NT изолированы друг от друга. Использование отдельных виртуальных машин позволяет реализовать вытесняющую мультизадачность (preemptive multitasking) с выделением каждому приложению квантов времени.
Оперативная память делится на страницы, приложению выделяется целое число страниц. Защита от несанкционированного доступа осуществляется на аппаратном уровне. Приложение Windows состоят из сегментов кода и сегментов данных. В зависимости от модели памяти приложение может иметь один или несколько сегментов кода и один или несколько сегментов данных.
Сегменты приложения Windows получают дополнительный атрибут - тип сегмента. Существуют сегменты с фиксированным расположением в оперативной памяти (fixed), перемещаемые (moveable) и удаляемые (discardable). Перемещаемые сегменты могут менять свое расположение в адресном пространстве. Управляет этим, незаметным для приложений, процессом операционная система Windows.
Windows - многозадачная операционная система. Поэтому такой ресурс, как оперативная память, используется совместно всеми работающими параллельно приложениями или различными копиями одного и того же приложения, запущенного несколько раз. В процессе работы вы запускаете и завершаете различные приложения, что приводит к фрагментации непрерывного адресного пространства. Используя механизм перемещения сегментов, основанный операционная система Windows по мере необходимости "уплотняет" оперативную память, высвобождая непрерывное адресное пространство для запуска новых приложений.
Удаляемые (discardable) сегменты обычно используются для хранения выполняемых сегментов или сегментов констант. Если операционной системе Windows требуется получить в свое распоряжение область памяти, она может уничтожить удаляемый сегмент и забрать распределенную для него память. Если впоследствии потребуется восстановить содержимое удаляемого сегмента, Windows выполняет чтение данных сегмента из соответствующего файла.
Помимо описанных выше атрибутов сегменты могут иметь еще два. Можно создать сегменты, загружаемые при запуске приложения (preload) и загружаемые при обращении к ним (loadoncall). Сегменты типа loadoncall не загромождают оперативную память, так как после запуска приложения они остаются на диске и загружаются в память только при необходимости. Причем при составлении программы вам достаточно описать сегмент как loadoncall, после чего Windows будет сама его загружать при обращении к сегменту со стороны приложения.
Windows - приложения могут пользоваться так называемой виртуальной памятью. Виртуальная память позволяет создать иллюзию работы с оперативной памятью огромного размера - десятки и сотни мегабайт. Реально в физической памяти располагаются только те области виртуальной памяти, к которым чаще всего происходит обращение. Остальные области памяти (страницы памяти) хранятся на диске в специальном файле. Виртуальная память облегчает работу с очень большими массивами данных. Можно, например, получить у Windows буфер размером 10 Мбайт и заполнить его содержимым файла, затем выполнить сортировку этого буфера и записать результат в тот же самый или другой файл.
Аппаратная независимость
Наряду с графическим приборным интерфейсом и многозадачной средой с обменом сообщениями, аппаратная независимость является третьей основной особенностью Windows, выделяющей ее среди всех графических оболочек.
Аппаратная независимость означает, что прикладная программа, работающее в среде Windows на некотором компьютере с определенным набором технических средств будет работать на любом компьютере, на котором работает система Windows. Таким образом, в системе Windows программист свободен при создании программ от особенностей и ограничений, накладываемых конкретными техническими устройствами.
Windows обеспечивает аппаратную независимость путем определения минимально необходимых свойств, которыми должны обладать технические устройства. Этот набор свойств является минимально необходимым для функционирования процедур Windows.
Схема процесса создания Windows программы.
Исходные файлы программы на языке Си компилируются в объектные файлы. Компоновщик собирает приложение и библиотечные файлы с помощью заголовочного файла, который служит для согласования типов и имён переменных и др. объектов. Файл определения модуля определяет, какие операции разрешены с данными и кодом программы.
Ресурсы представляют собой пиктограммы, шрифты, панели и т.д. После создания RC- файла его следует "скомпилировать" в двоичный аил ресурсов. Двоичные описания ресурсов загружаются в программу гораздо быстрее, чем, текстовые, поскольку программе не приходится их интерпретироватъ. Компилятор ресурсов генерирует двоичные описания ресурсов, определенных в текстовом виде и объединяет их с двоичными, хранящимися во внешних файлах. Результатом является файл расширением .RES. Для того чтобы скомпилировать RС - файл в RES - файл надо запустить компилятор ресурсов.
Последним шагом в процессе компиляции и компоновки программ всегда является связывание двоичного файла ресурсов (RES) и программного файла (ЕХЕ) в единый Windows - выполнимый файл (ЕХЕ). Для этого снова используется компилятор ресурсов. Эта команда является последней при создании Windows - программы,
Файл определения модуля.
Первая строка необходима для 16-битных приложений, для 32-битных не нужна.
EXETYPE WINDOWS
Директива CODE имеет следующий синтаксис:
CODE
[FIXED | MOVEABLE]
[DISCARDABLE | NONDISCARDABLE]