Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

Информатика, программирование->Лекция
Аналіз (від др. греч. «розкладання, розчленовування») — операція уявного або реального розчленовування цілого (речі, властивості, процесу або відношен...полностью>>
Информатика, программирование->Лекция
процесор - це основа будь-якого комп'ютера, його мозок. Процесор робить всі обчислення й віддає команди всім іншим компонентам комп'ютера. процесор - ...полностью>>
Информатика, программирование->Лекция
Не зважаючи на те, що курс Алгоритмізації та програмування , як одним із своїх компонентів, передбачає реалізацію розроблених алгоритмів на існуючих м...полностью>>
Информатика, программирование->Лекция
Цей розділ присвячений універсальній системі типів .NET Common Type System (CTS), яка знаходиться в центрі Microsoft .NET Framework. CTS визначає не т...полностью>>

Главная > Книга >Информатика, программирование

Сохрани ссылку в одной из сетей:

Введение

Изучение программирования на Си++ для современных операционных систем семейства MS Windows сопряжено со сложностями, связанными с большим количеством технических подробностей устройства приложения и операционной системы, а также вопросов их взаимодействия. Применение визуальных сред разработки, например, MS Visual Basic или Borland Delphi, существенно упрощает задачу разработки типичных приложений. Но при изучении только подобных инструментов возможно, что программист будет ориентироваться в некоторой специфической библиотеке классов или функций конкретной среды разработки и не будет детально представлять, как устроено приложение Windows и какие возможности есть у самой ОС, а не у конкретной библиотеки классов.

Возрастающая сложность Windows API привела к широкому распространению объектно-ориентированных языков программирования и появлению надежных библиотек классов для взаимодействия с ОС. Поэтому программирование только на уровне API представляется для большинства задач слишком сложным и неэффективным с точки зрения требуемых программистских усилий.

Для учебных целей в данной части курса выбрана среда разработки MS Visual C++ и библиотека классов MFC (Microsoft Foundation Classes) – одно из наиболее распространенных промышленных решений. Тем не менее, эти инструменты достаточно "типичные" и "низкоуровневые", чтобы впоследствии программист при необходимости смог достаточно быстро перейти к использованию других инструментальных средств.

Цель учебного курса состоит в усвоении студентом начальных навыков профессиональной разработки приложений Windows. Для этого необходимо иметь представление об архитектуре ОС, основных возможностях API, об архитектуре и возможностях MFC, а также надо уметь пользоваться средой разработки. В среде Visual C++ студенты должны научиться разрабатывать программы, содержащие основные типы окон (родительские, дочерние, диалоговые и др.), различные компоненты ресурсов (меню, пиктограммы, курсоры, горячие клавиши и т.п.), реализующие основные операции по выводу текста и графических элементов (отрезков, окружностей и т.п.) с помощью функций GDI.

В данной части курса программирование в MFC рассматривается не как процесс нажатия кнопок в окнах AppWizard. Конечно, средства автоматизации написания исходного текста тоже упоминаются, но только после того, как эти же средства будут освоены в ручном режиме и будет показано, как соотносятся возможности MFC и каркаса приложения MFC с возможностями Windows и Windows API.

Кроме лекционного материала, в данном курсе приведены несколько лабораторных работ (они находятся на прилагаемом компакт-диске). Часть из них построены по принципу "собрать приложение из готовых частей исходного текста", что позволяет лучше усвоить структуру изучаемых приложений. Часть заданий в лабораторных работах и упражнениях в лекциях требует написания новых приложений или фрагментов готовых приложений.

Лекция 1. Архитектура 32-разрядных ОС Windows

1. Введение

32-разрядные операционные системы Windows (Win32) отличаются от более старых 16-разрядных версий тем, что предназначены для работы на 32-разрядных процессорах (обычно это Intel-совместимые процессоры i386-Pentium III) и максимально полно используют их возможности. Одна из основных возможностей – более простой, по сравнению с 16-разрядными процессорами, способ адресации памяти, позволяющий пронумеровать все ячейки памяти адресного пространства программы с помощью 32-разрядных адресов.

Существует большое количество различных версий Windows. 32-разрядные ОС можно разделить на два семейства: (1) Windows NT/2000 и (2) Windows 95/98/ME.

При разработке ОС Windows NT главное внимание уделялось надежности, безопасности (защите данных и программ от несанкционированного доступа) и переносимости. Последнее свойство подразумевает возможность работы ОС на различных платформах, а не только на ПК с Intel-совместимыми процессорами. В эти ОС встроен графический интерфейс пользователя и различные средства для использования ОС в качестве сервера. В Windows NT есть эмулятор старых ОС, позволяющий запускать программы для Win16 и MS-DOS (если только они не используют каких-либо недокументированных возможностей и не обращаются напрямую к устройствам ПК).

ОС второго семейства (Windows 95) предназначались, в первую очередь, для домашнего применения и должны были обеспечить безболезненный переход от 16-разрядных ОС к 32-разрядным. Совместимость со старыми программами для MS-DOS и Windows 3.1 была одним из главных критериев при разработке этих ОС. Поэтому, чтобы работали как можно больше старых программ, в том числе использующие недокументированные особенности старых ОС и аппаратуры ПК, в эти ОС было включено много 16-разрядного кода (практически и MS-DOS, и Win16 как подсистемы). Поэтому ОС Windows 95 являются менее надежными, чем Windows NT (хотя и гораздо более надежными, чем старые 16-разрядные ОС).

Несмотря на различия между двумя семействами ОС, у них есть и большое количество общих свойств (например, интерфейс пользователя). Для программиста важно, что у всех ОС Win32 есть общий набор системных вызовов (функций), доступных для вызова из программ для обращения к ОС. Эти функции составляют Win32 API. Отличие состоит в том, что у некоторых функций в Windows NT используются параметры, которые в Windows 95 игнорируются. Например, это параметры, касающиеся безопасности и ограничивающие доступ к некоторым ресурсам программы.

2. Окна и сообщения

Windows можно отнести к классу многозадачных ОС, основанных на передаче сообщений. В "глубине" ОС реализован механизм, преобразующий информацию от различных устройств ввода/вывода (события) в некоторую структуру данных – сообщение. Примерами событий являются нажатие клавиши, перемещение мыши, тик таймера. Типичное приложение (так обычно называются прикладные программы для Windows) строится на базе каркаса, содержащего цикл обработки сообщений. В этом цикле выполняется прием сообщений и передача их в соответствующие функции-обработчики сообщений.

Сообщения, хотя и посылаются приложениям, но адресуются не им, а другим важнейшим компонентам ОС – окнам. Окно – это не просто прямоугольная область на экране, а некоторый объект, предназначенный для организации взаимодействия между пользователем и приложением.

2.1 Приложения, процессы, потоки и окна

При запуске приложения в Windows происходит создание процесса. Но ОС не выделяет для него процессорного времени. Процессу принадлежат открытые файлы, участки оперативной памяти и другие ресурсы. Кроме того, ему принадлежит программный поток. Поток, фактически, – это набор значений внутренних регистров процессора. Поток содержит информацию о том, какая машинная команда выполняется процессором в данный момент и где расположены локальные переменные. ОС выделяет квант времени каждому из работающих на компьютере потоков, т.о. в ОС обеспечивается многозадачность.

У одного процесса может быть несколько потоков. Например, в текстовом редакторе один поток может обрабатывать ввод данных от пользователя, а другой передавать документ на принтер.

Окно всегда "принадлежит" потоку. Поток может владеть одним или несколькими окнами, а также может не иметь ни одного окна. Окна потока сами находятся в иерархической связи: некоторые из них являются окнами верхнего уровня, а некоторые – дочерними окнами других окон (рис. 1.1).



Р
ис. 1.1.
Процессы, потоки и окна.

В Windows существует большое количество разных типов окон. Некоторые из них очевидны, например, главное окно приложения (о котором пользователь обычно думает, что это и есть приложение) и диалоговые окна. Менее очевидно, что большинство элементов управления в окнах приложений и диалоговых окнах тоже являются окнами. Каждая кнопка, строка ввода, полоса прокрутки, список, пиктограмма и даже фон рабочего стола рассматриваются ОС как окна.

На рис. 1.2 показан рабочий стол Windows 95 c двумя запущенными приложениями (Блокнот и Калькулятор). Каждое окно, в том числе кнопки, выделено черной рамкой (изображение получено с помощью утилиты Spy++ из комплекта Visual C++).

Рис. 1.2. Окна различных типов.

2.2 Оконные классы

Оконные классы – это шаблоны, хранящие информацию о свойствах окна. Среди этих свойств – начальные размеры окна, его пиктограмма, курсор и меню. Вероятно, самое главное свойство – это адрес функции, называемой оконной процедурой. Приложение обычно выполняет обработку полученных сообщений с помощью вызова функции DispatchMessage из Win API. Функция DispatchMessage, в свою очередь, вызывает соответствующую оконную процедуру. Адрес оконной процедуры при этом извлекается из оконного класса окна, которому послано сообщение. Именно оконная процедура выполняет обработку всех сообщений, посылаемых окну.

В Windows есть много стандартных оконных классов, например, стандартные элементы управления вроде кнопок (класс Button) и строк ввода (класс Edit).

Для регистрации новых оконных классов предназначена функция RegisterClass. Т.о. программист может реализовать окно с поведением, которого нет ни у одного из стандартных оконных классов. Например, именно так обычно реализуется главное окно приложения и выполняется регистрация пиктограммы и главного меню приложения.

Windows позволяет создавать подклассы и суперклассы для существующих оконных классов. При создании подкласса выполняется замена оконной процедуры класса. Это делается с помощью функции SetWindowLong (подкласс экземпляра) или SetClassLong (глобальный подкласс). Различие между двумя функциями в том, что в первом случае изменяется поведение только одного экземпляра окна, а во втором случае – поведение всех окон данного класса (в пределах приложения).

При создании суперкласса новый класс основывается на существующем, и запоминается адрес старой оконной процедуры. Для создания суперкласса приложение получает информацию о существующем классе с помощью функции GetClassInfo, запоминает адрес старой оконной процедуры, затем модифицирует полученную структуру WNDCLASS и использует ее при вызове RegisterClass. Сообщения, не обрабатываемые новой оконной процедурой, должны передаваться в старую.

Используемые термины похожи на термины объектно-ориентированного программирования, но отличаются от них по смыслу. Не надо путать оконный класс с понятием класса в Си++ (например, с классами библиотеки MFC). Понятие оконного класса было введено в Windows несколькими годами раньше, чем в этой ОС распространились объектно-ориентированные языки.



Похожие страницы:

  1. Основы программирования на языке Си

    Реферат >> Информатика
    ... графики; (3) Объектно-ориентированное программирование на языке Си++ и (4) Программирование для Microsoft Windows с использованием Visual C++ и библиотеки классов MFC. После изучения курса студент ...
  2. Основы программирования под Windows с использованием MFC

    Реферат >> Информатика, программирование
    Программирование под Windows с использованием MFC MFC – это базовый набор (библиотека) классов, написанных на языке С++ и предназначенных для упрощения и ... Microsoft Visual C++: MFC AppWizard (exe) – при помощи мастера приложений можно создать проект Windows ...
  3. Разработка Windows-программ. Знакомство с Delphi

    Контрольная работа >> Информатика, программирование
    ... внутри класса Основные свойства класса: ... использованием только конструкций структурного программирования: ... GUI в программах Windows: Windows – это ОС ... Visual Component Library – библиотека компонентов MFC(Microsoft Foundament Class) – оболочка для Win32 SDK (для ...
  4. Программирование на языках среднего уровня С/С++

    Конспект >> Информатика, программирование
    ... проектов на языках программирования С/С++ и Visual C++, рассмотрены идеология, состав языка программирования, структуры программ, ... для обеспечения функций связи. Существующие библиотеки классов (Microsoft MFC, Borland OWL) облегчают создание Windows- ...
  5. Использование платформы j2me для мобильных телефонов при организации видеонаблюдений

    Дипломная работа >> Информатика
    ... программирования Дипломная работа "Использование платформы j2me для ... системах: Symbian и Windows Mobile Smartphone Edition ... IBM, Toshiba, Nokia, Microsoft, 3COM, Motorola. ... библиотеке LWUIT нет такого способа размещения компонентов, поэтому был создан класс ...

Хочу больше похожих работ...