Читайте также:
|
|
Тип элемента Имя оконного класса WNDCLASS Класс MFC
Кнопка BUTTON CButton
Список LISTBOX CListBox
Элемент редактирования EDIT CEdit
Комбинированный список COMBOBOX CComboBox
Полоса прокрутки SCROLLBAR CScrollBar
Статический элемент STATIC CStatic
ЭУ можно создать как объект класса MFC и вызвать у него функцию-член Create, например, для создания кнопки с надписью Запуск:
CButton m_wndPushButton;
m_wndPushButton.Create("Запуск", WS_CHILD ¦ WS_VISIBLE ¦ BS_PUSHBUTTON,
rect, this, IDC_BUTTON);
В этом примере создается нажимаемая кнопка (стиль BS_PUSHBUTTON), которая будет дочерним окном окна this и будет занимать в его клиентской области область rect. Целочисленный идентификатор IDC_BUTTON часто называется идентификатором дочернего окна или идентификатором элемента управления. В данном окне все дочерние ЭУ, на сообщения которых требуется реагировать, должны иметь уникальные идентификаторы.
71. Инструментальные средства Visual C++. Создание окна диалога. Изучение описания ресурса. Элементы языка описания ресурсов. Компиляция ресурсов.
Существует 2 основных вида диалоговых окон:
1. дающие возможность выполнить ввод информации для приложения
2. информационное
Для первой группы типовыми решаемыми задачами является ввод строки, ввод целых чисел, ввод действительных данных, обработка событий элементов ДО. Вторая группа окон предоставляет оперативную информацию о работе самого приложения.
Все ДО м.б. классифицированы по другому признаку: по способу обработки ДО
· модальное
· немодальное
Модальное окно не передает управление другим окнам, пока пользователь не ответит на запрос модального окна. Немодальное делает возможным выбор любого другого.
Для построения ДО используется редактор ресурсов VS. ДО – один из видов ресурсов.
Для разработки ДО редактор ресурсов предоставляет пользователю набор универсальных элементов управления.
Для каждого элемента управления характерным является:
1. имя идентификатора
2. кол-во составляющих элемента
Элемент управления может состоять из 2-ух составляющих: надпись и сам элемент управления. Эти 2 компонента явл. самостоятельными объектами.
В процессе создания модального диалогового окна выделяются три этапа:
1) Разработка шаблона диалогового окна, описывающего внешний вид окна и его
элементов управления.
STYLE DS_MODALFRAME ¦ WS_POPUP ¦ WS_VISIBLE ¦ WS_CAPTION ¦ WS_SYSMENU
CAPTION "Введите свое имя"
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "&Имя", -1, 8, 14, 24, 8
EDITTEXT IDC_NAME, 34, 12, 118, 12, ES_AUTOHSCROLL
DEFPUSHBUTTON "OK", IDOK, 60, 34, 40, 14, WS_GROUP
PUSHBUTTON "Отмена", IDCANCEL, 112, 34, 40, 14, WS_GROUP
END
2) Создание объекта класса или подкласса CDialog, являющегося оболочкой для шаблона диалогового окна.
3) Вызов функции-члена CDialog::DoModal для вывода окна на экран.
Для простых диалоговых окон можно непосредственно пользоваться классом CDialog. Однако более часто наследуется подкласс CDialog, в котором реализуется
поведение конкретного окна. Сначала рассмотрим отдельные компоненты диалогового окна, а затем создание подклассов CDialog.
Структура EXE-файла для Windows такова, что в его конец могут быть записаны некоторые данные, совершенно не зависимые от самой программы. Они называются ресурсами. Они могут редактироваться совершенно раздельно, хотя находятся в том же файле, где код и данные. При загрузке программы на выполнение ресурсы обычно не загружаются в память, а это делается лишь по запросу от программы. В ресурсах программист может хранить любые данные какого угодно размера. Но есть стандартные типы ресурсов, такие как иконки, битовые образы, курсоры, диалоги, меню. Большинство диалоговых окон, которые Вы видели в программах, не создаются программным путем, а просто их шаблоны загружаются из ресурсов. Сами шаблоны, как и другие ресурсы, редактируются визуально с помощью специальных ресурсных редакторов.
При сборке проекта приложения, ресурсы добавляются к EXE-файлу уже после линковки. Для описания ресурсов существует специальный язык, а сами описания хранятся в текстовых файлах с расширением rc. Раньше программисты вручную писали сценарии ресурсов на языке ресурсов, сейчас же так никто не делает, а используются визуальные редакторы. Перед добавлением к исполняемому файлу сценарии преобразуются в бинарный вид с помощью компилятора ресурсов, в результате чего получается файл с расширением res. Как правило, все эти шаги выполняются автоматически при работе из интегрированной среды Visual C++. Вообще, ручное редактирование ресурсных сценариев требуется сейчас уже очень редко, лишь при определении нестандартных ресурсов в сложных проектах. Мы будем использовать только интегрированную среду, как это сейчас делают многие программисты.
Каждый ресурс имеет свой уникальный идентификатор. Это может быть либо строка, либо число (константа). Числа можно использовать всегда, а строки - не всегда. Мы будем использовать и то, и другое. Редактор ресурсов из Visual C++ помещает имена констант в файл resource.h, который нужно включить в файлы программы. Стандартные идентификаторы хранятся в файле afxres.h, который обычно используется автоматически ресурсным редактором.
72. Windows - эволюция и революция. Ранние поколения: DOS и Windows 3.x. Исторические вехи Windows приложений. BIOS для Windows. Прерывания. Написание программ для Windows на языках С и С++. Параллельная обработка.
Разработка MS Windows - одного из самых популярных программных продуктов наших дней началась примерно 10 лет назад. Тогда считалось, что будущее принадлежит интегрированным средам, таким как FrameWork, VisiOn и DESQ, объединяющим в себе несколько программ разного класса. Все эти продукты работали в текстовом режиме. Некоторые из них позволяли использовать мышь. Microsoft заняла другую позицию - после посещения исследовательского центра Xerox PARC Билл Гейтс решил сделать ставку не графическую оболочку, предоставляющую разработчикам стандартные средства для создания интерфейса
Windows 3.x — общее название поколения операционных систем Windows от компании Microsoft, выпущенных с 1990по 1994 год. Первым широко распространённым релизом Microsoft Windows стала 3.0, позволив Майкрософт соревноваться с Macintosh и Commodore Amiga в области операционных систем с графическим интерфейсом.
На самом деле Windows 3.x не является полноценной самостоятельной операционной системой, потому что она фактически является операционной системой-надстройкой над DOS, так как использует её в качестве базовой рабочей платформы.
BIOS (Basic Input/Output System) - базовая система ввода-вывода определяет ход процесса загрузки компьютера. Лишь только после этого происходит загрузка операционной системы ПК и дальнейшая его работа происходит уже под управлением ОС. Во время работы компьютера BIOS обеспечивает базовые функции ввода-вывода информации и функции взаимодействия различных устройств между собой.
Физически BIOS - это набор нескольких программ. Настройка самой BIOS происходит с помощью программыBIOS SetUp, в которую можно попасть при нажатии кнопки Delete (либо, в некоторых версиях - F2) во время загрузки компьютера (не стоит путать программу BIOS SetUp с самой системой BIOS).
Прерывание (interrupt) – это сигнал, заставляющий ЭВМ менять обычный порядок выполнения команд процессором.
Возникновение подобных сигналов обусловлено такими событиями, как:
завершение операций ввода-вывода.
истечение заранее заданного интервала времени.
попытка деления на нуль.
сбой в работе аппаратного устройства и др.
Среда разработки MS Visual C++ и библиотека классов MFC (Microsoft Foundation Classes) – одно из наиболее распространенных промышленных решений. Тем не менее, эти инструменты достаточно "типичные" и "низкоуровневые", чтобы впоследствии программист при необходимости смог достаточно быстро перейти к использованию других инструментальных средств. Все современные компиляторы с языка C++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных.
Современные интегрированные средства разработки приложений Windows позволяют автоматизировать процесс создания приложения. Для этого используются генераторы приложений. Программист отвечает на вопросы генератора приложений и определяет свойства приложения - поддерживает ли оно многооконный режим, технологию OLE, трехмерные органы управления, справочную систему. Генератор приложений, создаст приложение, отвечающее требованиям, и предоставит исходные тексты. Пользуясь им как шаблоном, программист сможет быстро разрабатывать свои приложения.
Подобные средства автоматизированного создания приложений включены в компилятор Microsoft Visual C++ и называются MFC AppWizard. Заполнив несколько диалоговых панелей, можно указать характеристики приложения и получить его тексты, снабженные обширными комментариями. MFC AppWizard позволяет создавать однооконные и многооконные приложения, а также приложения, не имеющие главного окна, -вместо него используется диалоговая панель. Можно также включить поддержку технологии OLE, баз данных, справочной системы.
Конечно, MFC AppWizard не всесилен. Прикладную часть приложения программисту придется разрабатывать самостоятельно. Исходный текст приложения, созданный MFC AppWizard, станет только основой, к которой нужно подключить остальное. Но работающий шаблон приложения - это уже половина всей работы. Исходные тексты приложений, автоматически полученных от MFC AppWizard, могут составлять сотни строк текста. Набор его вручную был бы очень утомителен.
Нужно отметить, что MFC AppWizard создает тексты приложений только с использованием библиотеки классов MFC (Microsoft Foundation Class library). Поэтому только изучив язык C++ и библиотеку MFC, можно пользоваться средствами автоматизированной разработки и создавать свои приложения в кратчайшие сроки.
Как известно, все версии Windows поддерживают многозадачность. В Windows 3.1 имеется только один тип многозадачности – основанный на процессах. Процесс – это программа, которая выполняется. При многозадачности такого типа две или более программы могут выполняться параллельно. В Windows допускается существование процессов, две или более частей которых выполняются одновременно. В операционной системе возможно параллельное выполнение, как программ, так и отдельных частей самих программ. Это позволяет писать очень эффективные программы.
Новое поколение Windows. Windows как операционная система. Стандартизованный пользовательский интерфейс. Многозадачность. Автоматическое управление памятью. Использование очередей при вводе.
Операционные системы семейства Windows являются наиболее распространенными ОС, которые установлены в домашних и офисных ПК.
Графическая оболочка ОС Windows обеспечивает взаимодействие пользователя с компьютером в форме диалога с использованием ввода и вывода на экран дисплея графической информации, управления программами с помощью пиктограмм, меню, окон, панелей (управления, задач, инструментов) и других элементов управления.
Основными элементами графического интерфейса Windows являются: Рабочий стол, Панель задач с кнопкой Пуск. Так как в Windows применен графический пользовательский интерфейса, то основным устройством управления программами является манипулятор мышь.
В соответствии со своим названием, интерфейс Windows является набором окон, каждое из которых принадлежит какой-либо запущенной программе.
Окно — обособленная область экрана. Стандартное окно состоит из заголовка, в котором отображается название окна, кнопок управления окном, расположенных в правом верхнем углу, линейки меню, в которых собраны все команды управления программой, строки статуса, в которой отображаются сведения о выбранной команде меню, режиме работы программы и т. д.
Окно, с которым в данный момент работает пользователь, называется текущим или активным. Чтобы сделать окно текущим, необходимо щелкнуть на нем мышкой,
Программа в Windows носит название приложение, файл, содержащий данные для какой-либо программы (например текст для программы Microsoft Word), — документом. Каждый тип документа связан с тем или иным приложением. Каталог в терминах Windows — папка.
Пространство, на котором работает пользователь в Windows и на котором размешаются все окна, называется рабочим столом. Фактически рабочий стол является окном программы Explorer — Проводник. На рабочем столе раскрывается главное меню, когда нажимается кнопка Пуск. В нижней части рабочего стола располагается панель задач.
Многозадачность — свойство операционной системы или среды выполнения обеспечивать возможность параллельной обработки нескольких процессов.
Как известно, все версии Windows поддерживают многозадачность. В Windows 3.1 имеется только один тип многозадачности - основанный на процессах. В новых системах Windows поддерживается два типа многозадачности: основанный на процессах и основанный на потоках.
Процесс — это программа, которая выполняется. При многозадачности такого типа две или более программы могут выполняться параллельно. Конечно, они по очереди используют ресурсы центрального процессора и с технической точки зрения выполняются неодновременно, но благодаря высокой скорости работы компьютера это практически незаметно.
Поток — это отдельная часть исполняемого кода. Название произошло от понятия «направление протекания процесса». В многозадачности данного типа отдельные потоки внутри одного процесса также могут выполняться одновременно. Все процессы имеют, по крайней мере, один поток, но в Windows 95 и Windows NT их может быть несколько.
Автоматическое управление памятью является одной из служб, которые предоставляет среда CLR во время управляемого выполнения. Сборщик мусора среды CLR управляет освобождением и выделением памяти для приложения. Для разработчиков это означает, что при разработке управляемого приложения не нужно писать код для управления памятью. Автоматическое управление памятью позволяет устранить распространенные проблемы, такие как не освобожденный по забывчивости объект, вызывающий утечку памяти, или попытки доступа к памяти для уже удаленного объекта. В этом разделе описано, каким образом сборщик мусора выделяет и освобождает память.
Выделение памяти
При инициализации нового процесса среда выполнения резервирует для него непрерывную область адресного пространства. Это зарезервированное адресное пространство называется управляемой кучей. Эта управляемая куча содержит указатель адреса, с которого будет выделена память для следующего объекта в куче. Изначально этот указатель устанавливается в базовый адрес управляемой кучи. Все ссылочные типы размещаются в управляемой куче. Когда приложение создает первый ссылочный тип, память для него выделяется, начиная с базового адреса управляемой кучи. При создании приложением следующего объекта сборщик мусора выделяет для него память в адресном пространстве, непосредственно следующем за первым объектом. Пока имеется доступное адресное пространство, сборщик мусора продолжает выделять пространство для новых объектов по этой схеме.
Выделение памяти из управляемой кучи происходит быстрее, чем неуправляемое выделение памяти. Поскольку среда выполнения выделяет память для объекта путем добавления значения к указателю, это осуществляется почти так же быстро, как выделение памяти из стека. Кроме того, поскольку выделяемые последовательно новые объекты и располагаются последовательно в управляемой куче, приложение может получать доступ к объектам очень быстро.
Освобождение памяти
Механизм оптимизации сборщика мусора определяет наилучшее время для выполнения сбора, основываясь на произведенных выделениях памяти. Когда сборщик мусора выполняет очистку, он освобождает память, выделенную для объектов, которые больше не используются приложением. Он определяет, какие объекты больше не используются, основываясь на корнях приложения. Каждое приложение имеет набор корней. Каждый корень либо ссылается на объект, находящийся в управляемой куче, либо имеет значение NULL. Корни приложения содержат указатели глобальных и статических объектов, локальные переменные и параметры ссылочных объектов в стеке потока, а также регистры процессора. Сборщик мусора имеет доступ к списку активных корней, которые поддерживаются JIT-компилятором и средой выполнения. С помощью этого списка он проверяет корни приложения и в процессе проверки создает граф, содержащий все объекты, к которым можно получить доступ из этих корней.
Объекты, не входящие в этот граф, являются недостижимыми из данных корней приложения. Сборщик мусора считает недостижимые объекты мусором и будет освобождать выделенную для них память. В процессе очистки сборщик мусора проверяет управляемую кучу, отыскивая блоки адресного пространства, занятые недостижимыми объектами. При обнаружении недостижимого объекта он использует функцию копирования памяти для уплотнения достижимых объектов в памяти, освобождая блоки адресного пространства, выделенные под недостижимые объекты. После уплотнения памяти, занимаемой достижимыми объектами, сборщик мусора вносит необходимые поправки в указатель, чтобы корни приложения указывали на новые расположения объектов. Он также устанавливает указатель управляемой кучи в положение после последнего достижимого объекта. Память уплотняется, только если при очистке обнаруживается значительное число недостижимых объектов. Если после сборки мусора все объекты в управляемой куче остаются на месте, то уплотнение памяти не требуется.
Для повышения производительности среда выполнения выделяет память для больших объектов в отдельной куче. Сборщик мусора автоматически освобождает память, выделенную для больших объектов. Однако для устранения перемещений в памяти больших объектов эта память не сжимается.
Дата добавления: 2015-09-03; просмотров: 101 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Соглашения о вызовах | | | Новое поколение Windows. Передача информации с помощью сообщений. Независимость от драйверов аппаратуры. Plug-and-play. Библиотеки динамической компоновки. 16 бит против 32 бит. |