Профессор А.А. Емельянов




Московская финансово-промышленная академия

 

 

Емельянов А.А.

Сальников Ю.Н.

Емельянова Н.З.

Основы программирования для
информатиков и инженеров.

Часть 2: Прикладное программирование в Windows

 

 

Москва, 2004


УДК 681.3.06

ББК 24.4.9

Е 60

 

Емельянов А.А., Сальников Ю.Н., Емельянова Н.З. Основы программирования для информатиков и инженеров. Часть 2: Прикладное программирование в Windows / Под ред. проф. А.А. Емельянова. – М.: МФПА, 2004. – 351 с.

 

Рецензенты:

1) Шориков Андрей Федорович, д.ф.-м.н., профессор, зав. кафедрой Информационных систем в экономике, Уральский государственный экономический университет, г. Екатеринбург.

2) Кафедра Информационных систем в экономике и управлении, Санкт-Петербургский государственный инженерно-экономичес-кий университет (ИНЖЭКОН).

 

 

В первой части книги в систематической форме излагаются основы программирования Windows-приложений на языках С/С++. Подробно рассмотрены возможности операционной системы в части API. Даются рекомендации: как надо программировать, как разрабатывать программу, как ее писать. Практические примеры различной сложности ориентированы на работу в среде Microsoft Visual C++.

Все учебные проекты, изложенные в книге, отлажены авторами в Windows XP (всего – 42 проекта различной сложности). Поэтому книга может быть хорошей основой для создания практикумов по дисциплинам «Операционные системы, среды и оболочки», «Высокоуровневые методы информатики и программирования», «Архитектура информационных систем».

Рекомендовано учебно-методическим объединением вузов по образованию в области прикладной информатики в качестве учебного пособия студентам, обучающимся по специальностям «Прикладная информатика в экономике» и «Информационные системы».

 

 

Ó Емельянов А.А., 2004

Ó Сальников Ю.Н., 2004

Ó Емельянова Н.З., 2004

Ó Московская финансово-промышленная академия, 2004


Содержание

 

 

Введение

 

Глава 1. Модель программирования приложений

1.1. Потребительские свойства Windows

1.2. Процессы в Windows и потоковая многозадачность

1.3. Динамические библиотеки

1.4. Программное обеспечение для создания Win-приложений

 

Глава 2. Обзор возможностей программирования

2.1. Общий взгляд на программирование в Windows

2.2. Взаимодействие Windows с программой

2.3. Win32 API: прикладной интерфейс для Windows

2.4. Компоненты окна

2.5. Основы приложений Windows

2.6. Каркас приложения Windows

2.7. Определение класса окна

2.8. Создание окна

2.9. Цикл обработки сообщений

2.10. Оконная функция

 

Глава 3. Обработка сообщений Windows

3.1. Что такое сообщения?

3.2. Обработка нажатая клавиш

3.3. Обработка сообщений WM_PAINT

3.4. Обработка сообщений «мыши»

3.5. Генерация сообщения WM_PAINT

3.6. Генерация сообщений таймера

 

Глава 4. Ресурсы и меню

4.1. Окна сообщений MessageBox

4.2. Представляем меню

4.3. Использование ресурсов

4.4. Включение меню в программу. Обработка команд

4.5. Включение акселераторов сменю

4.6. Загрузка таблицы акселераторов

 

Глава 5. Создание диалогов

5.1. Взаимодействие Win-диалогов с пользователем

5.2. Модальные диалоги: обработка сообщений

5.3. Активизация и создание простейшего диалога

5.4. Определение ресурсов диалога

5.5. Оконная функция диалога

5.6. Основы работы со списками

5.7. Инициализация списка и выбор элементов

5.8. Окно ввода

5.9. Использование немодального диалога

 

Глава 6. Графические образы, иконки и курсоры

6.1. Иконка и курсор

6.2. Определение малой иконки

6.3. Работа с растровыми изображениями

6.4. Работа с несколькими растровыми изображениями

 

Глава 7. Более подробно об элементах управления

7.1. Работа с контрольными переключателями

7.2. Статические элементы

7.3. Работа с селекторными кнопками

7.4. Линейки прокрутки

 


Введение

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

Практика показывает, что в последнее время большинство таких работ проводится с применением языка «С++» (по-русски произносится как «си плюс плюс»), который в настоящее время является одним из самых популярных языков программирования. Это универсальный язык, для которого характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов. Язык «C++» не является ни языком «очень высокого уровня», ни «большим» языком, и не предназначается для некоторой специальной области применения, но отсутствие ограничений и общность языка делают его более удобным и эффективным для многих задач, чем языки, предположительно более мощные. По разнообразному количеству средств, предоставляемых программистам, его можно считать одним из самых эффективных языков, но, иногда, – и самых эффектных, и самых сложных. Все перечисленные обстоятельства объясняют, почему нами этот язык выбран в качестве базового.

 
 


Учитывая многолетний опыт программирования на этом языке при разработке самых различных приложений, мы разделили весь процесс обучения программированию на «С++» студентов в течение двух-трех семестров на несколько учебных курсов, структурно-логически связанных следующим образом:

 

В язык «C++» в качестве основного, базового средства включен более старый язык «C» (по-русски произносится как «си», поэтому некоторые авторы пишут его название как «Си»), который первоначально предназначался для написания операционной системы Unix; он был разработан и реализован Деннисом Ричи. Операционные системы Unix и Windows, компиляторы с языка «C++» и большинство прикладных программных систем сейчас создаются на языке «C++». Этот язык, однако, не связан с какими-либо определенными аппаратными средствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любом компьютере или ЭВМ, имеющей C-компилятор.

Целью первого учебного курса «Основы алгоритмизации и программирования» является обучение основам программирования. В это время студент, не будучи асом алгоритмизации, не сможет по достоинству оценить возможности объектно-ориентированного программирования, предоставляемые «C++». Поэтому сначала обучение ведется на классическом языке «С» (он входит в состав любой версии «С++) с минимальным привлечением дополнительных средств, имеющихся в «C++».

Второй учебный курс «Прикладное программирование в Windows» предназначен для развития навыков реализации реальных проектов, создания Windows-приложений (Windowsapplications). При этом используются все ранее изученные средства. В соответствии с этими тремя курсами учебно-методическое обеспечение также разделено на 3 части.

В результате третьего учебного курса студенты, получившие изрядный опыт по описанию алгоритмов средствами традиционного языка «C», совершенствуют свое мастерство, и средствами объектно-ориентированного программирования языка «C++» делают программы более эффективными и компактными.

Мы не претендуем на оригинальность изложения теоретического материала по программированию. При создании данного учебного пособия нами использовались не только собственные разработки, но и данные из книг, пособий и справочников известных авторов: М.И. Болски, Б. Кернигана, Д. Кнута, Д. Дж. Круглински, А.Б. Крупника, Д. Ритчи, Г. Шилдта. Поэтому учебное пособие можно рассматривать и как хрестоматийное издание.

В качестве основного методического приема используется прагматический подход, изложенный в знаменитой книге Андре Ламота «Программирование игр для Windows: советы профессионала» (М.: Издательский дом «Вильямс», 2004), – это обучение на «живых» примерах. Дело в том, что максимум всех свойств и достижений программирования (интеллектуальные системы, базы данных, мультипроцессинг и многозадачность, динамические библиотеки, explorer и др.) применяется в очень сложных кибернетических системах, в том числе, – в профессиональных тренажерах, используемых в управлении экономикой, космонавтике, военном деле, авиации и службах МЧС.

Книга рекомендована учебно-методическим объединением вузов по образованию в области прикладной информатики в качестве учебного пособия студентам, обучающимся по специальностям «Прикладная информатика в экономике» и «Информационные системы».

 

Редактор,

профессор А.А. Емельянов


Глава 1. Модель программирования приложений

1.1. Потребительские свойства Windows

 

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

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

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

 

Происхождение Windows. Начнем рассмотрение с того, как Windows стала Windows и како­вы ее взаимосвязи с миром разработки игр. Все началось с Windows 1.0. Это была первая попытка Microsoft создать коммерче­скую оконную операционную систему, и вся она оказалась одной большой ошибкой. Windows 1.0 базировалась на операционной системе MS DOS (и это очень большая ошибка), не была многозадачной, работала чересчур медленно и выглядела слишком плохо. (Пожалуй, основной причиной ее неус­пеха был именно плохой внешний вид.) Но если говорить серьезно, то главная проблема заключалась в том, что Windows требовалось более мощное аппаратное обеспечение, графические и звуковые возможности, чем те, которые могли дать машины с процессо­ром 80286 (или, еще хуже, 8086).

Тем не менее Microsoft двигалась вперед, и вскоре свет увидела следующая версия – Windows 2.0. В качестве примера приведем случай, произошедший в компании вSoftware Publishing Corporation (США), когда эта компания получила бе­та-версию Windows 2.0. Зал для совещаний был забит сотрудниками; присутствовал даже президент компании (с неизменным коктейлем в руке). Была запущена демоверсия Windows 2.0 и загружены несколько приложений, и все казалось вполне работоспособным. Но к тому времени уже увидел свет IBM Presentation Manager (PM), который не только го­раздо лучше выглядел, но и работал под OS/2, которая была полноценной операционной системой, существенно превосходящей во всех отношениях Windows 2.0 (бывшей не более чем надстройкой над MS DOS). Так что на собрании был вынесен следующий вердикт: «Неплохо, но для разработки не годится. Остаемся с DOS, и где мой коктейль?»

 

Windows 3.x. В 1990 году наконец-то появилась Windows 3.0, которая выглядела вполне прилично. Конечно, она очень напоминала Mac OS компании Ap­ple, но кого это волновало? (В конце концов, на­стоящие программисты терпеть не могут Мас.) Наконец разработчики программного обес­печения могли создавать привлекательные приложения для PC и начать перенос программ для MS DOS в Windows. Это была поворотная точка, когда PC начал побеждать Мас на рынке бизнес-приложений, а затем и на рынке настольных издательских систем (при том, что Ap­ple выпускала новые версии аппаратного обеспечения каждые пять минут).

Несмотря на приличную работу Windows 3.0, в ней осталось немало проблем, ошибок и прочих неприятностей. Появление Windows 3.0 оказалось принципиальным скачком в разви­тии технологии, так что определенные неприятности были не такими уж неожиданными. Для исправления этих проблем Microsoft выпустила Windows 3.1. Отдел маркетинга Microsoft хотел дать ей имя Windows 4.0, но потом было решено сделать ее Windows 3.1, поскольку в систему было внесено не так уж много новшеств, чтобы изменять старший номер версии.

Одним из новшеств Windows 3.1 стала поддержка видео и звука, другим (в версии 3.11 – Windows for Workgroups) – поддержка работы в сети. Главная же проблема Win­dows 3.1 оставалась в том, что это было, по сути, приложение MS DOS.

 

Windows 95. В 1995 году Microsoft сумела создать настоящую 32-битовую, многозадачную, много­поточную операционную систему (несмотря на то, что в ней оставался немалый кусок 16-битового кода от Windows 3.1). После выпуска Windows 95 многие приложения, созданные ранее для операционной системы Unix, были перепрограммированы для нее. Появление Windows 95 измени­ло отношение к этому классу операционных систем. Выход в свет Windows 95 изменил компьютерный бизнес. В 1996 году Microsoftвыпустила комплект Game SDK, который, по сути, можно считать первой версией DirectX. Эта технология работала только в Windows 95, но была слишком мед­ленной, чтобы состязаться с такими играми для DOS, как DOOM или Duke Nukem.

 

Windows 98. В средине 1998 года была выпущена новая версия операционной системы – Windows 98. Это скорее эволюционный, чем революционный шаг в развитии технологий, но от этого он не становится менее важным. Windows 98 – это полностью 32-битовая операционная система с поддержкой всего, что только можно себе вообразить, открытая для всевозможных расширений. Она обладает встроенной поддержкой сетей и Internet, мультимедиа, ЗD-графики, DirectX.

Windows 98 существенно надежнее в работе по сравнению с Windows 95. Конечно, и Windows 98 может взбрыкнуть, но с ней это случается гораздо реже, чем с Windows 95. Кроме того, Plug and Play в Windows 98 работает на самом деле и работает неплохо.

 

Windows ME. В конце 1999 – начале 2000 года увидела свет версия Windows ME (Millennium). Она, по сути, представляет собой Windows 98 с увеличенной степенью интегрированности поддержки сети и мультимедиа. Ее появление – это в большей степени коммерческий ход, чем реальная техническая необходимость. Windows ME более капризна, в ней плохо ра­ботает ряд приложений, ее «не любит» некоторое аппаратное обеспечение, так что эта операционная система хорошо работает, как правило, только на очень новых машинах, в то время как у Windows 98 обычно не возникает проблем при работе на компьютерах, вы­пущенных еще в 1995 году. Однако на новых машинах WindowsME – достаточно надеж­ная операционная система.

 

Windows XP. Эта операционная система сразу понравилась своим внешним видом, можно ска­зать – своей эргономичностью. Она выглядит как Windows 98 или ME, в то же время обладая надежностью Windows 2000 или NT. Это был очередной шаг в области операционных систем для средних пользователей. Но наряду со всеми прелестями имеется и обратная сторона медали.

Microsoft годами предупреждала производителей аппаратного и про­граммного обеспечения о том, что не надо «химичить» и использовать в своем коде не совсем корректные способы работы с аппаратным обеспечением. В результате в истинно 32-битовой Win32-совместимой операционной системе просто не запускается ряд при­ложений, нарушающих правила Microsoft. В конечном счете, это даже неплохо, так как производители будут вынуждены откорректировать свой код (который и был одной из причин нестабильности работы Windows 95/98).

Ну а пока, чтобы не потерять клиентов из-за такой несовместимости, ХР имеет два варианта помощи пользователям в данной ситуации. Во-первых, операционная система постоянно обновляется посредством Microsoft Update и пользователь немедленно получа­ет исправленное программное обеспечение. Во-вторых, для работы с проблемным про­граммным обеспечением в ХР имеется возможность включения так называемого режима совместимости (с несовместимым программным обеспечением; по сути, его работа сво­дится к тому, чтобы восстановить все ошибки, – и тогда программы заработают).

 

Windows NT/2000. Теперь мы можем поговорить и о Windows NT. Во время написания этой книги текущей была версия 4.0 release 5, которая была переименована в Windows 2000 и, по сути, представляет собой NT 5.0. Как уже говорилось, линии 9Х и NT сходятся в одной точке – Windows ХР, пред­назначенной для широкого круга пользователей. Windows 2000 попросту существенно строже Windows ХР, так что многие производители игр предпочитают разрабатывать их под Windows 2000, а затем выпускать для Windows 9X/ME/XP. Windows 2000 обладает полной под­держкой Plug and Play наряду с Win32/DirectX, так что приложения, написанные для Windows 9X с DirectX, будут нормально работать в Windows 2000.

Итак, какой из всего сказанного следует вывод? Если вы пишете приложение Win32 с использованием DirectX (или без него), то такое приложение будет корректно работать в Windows 95, 98, ME, ХР и 2000. Следовательно, все изложенное в этой книге применимо для целого ряда операционных систем семейства Windows.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: