Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии программирования. Программирование графических интерфейс

.pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
2.24 Mб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Пермский национальный исследовательский политехнический университет»

А.М. Ноткин

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ ИНТЕРФЕЙСОВ:

Microsoft Visual Studio и Borland Delphi

Утверждено Редакционно-издательским советом университета

в качестве учебного пособия

Издательство Пермского национального исследовательского

политехнического университета

2013

УДК 681.3 Н85

Рецензенты:

канд. техн. наук, ст. научный сотрудник ТиИС ИМСС Уральского отделения РАН Г.Ф. Масич; канд. техн. наук, доцент кафедры информационных

технологий и автоматизированных систем Пермского национального исследовательского политехнического университета О.А. Полякова

Ноткин, А.М.

Н85 Технологии программирования. Программирование графических интерфейсов : Microsoft Visual Studio и Borland Delphi : учеб. пособие / А.М. Ноткин. – Пермь : Изд-во Перм. нац. исслед. политехн. ун-та, 2013. – 205 с.

ISBN 978-5-398-00972-9

Пособие состоит из двух частей. В первой части рассматриваются вопросы создания программ в среде Microsoft Visual C++,

во второй – в RAD среде Borland Delphi.

Функции API, классы MFC, классы VCL, графический вывод, программирование диалогов, сохранение и восстановление объектов рассматриваются на примерах, сопровождаемых необходимыми теоретическими сведениями.

Пособие предназначено для освоения основных принципов и получения практических навыков разработки приложений с графическим интерфейсом в современных средах программирования и рекомендуется студентам направления «Информатика

ивычислительная техника» как для самостоятельной работы, так

ив рамках аудиторных занятий.

УДК 681.3

ISBN 978-5-398-00972-9

© ПНИПУ, 2013

ОГЛАВЛЕНИЕ

 

Часть I. Разработка графических интерфейсов

 

в среде Microsoft VisualC++ .................................................................

6

1. Приложения Win32 API ..............................................................................

6

1.1. Создание нового проекта программы .......................................................

6

1.2. Просмотрщик рабочего пространства Workspace Viewer ......................

7

1.3. Среда Win32 .................................................................................................

9

1.4. Классы и объекты Win32 ..........................................................................

10

1.5. Программа для Windows ...........................................................................

11

1.6. Регистрация класса окна...........................................................................

14

1.7. Сообщения и функция обратного вызова...............................................

20

1.8. Создание главного окна приложения......................................................

23

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

26

1.10. Пример создания простого Win32 приложения

 

в среде Microsoft Visual Studio ................................................................

28

Вопросы для самоконтроля.............................................................................

30

Упражнения......................................................................................................

31

2. Программирование графики...................................................................

32

2.1. Графический интерфейс устройства (GDI).............................................

32

2.2. Контекст устройства (DC) ........................................................................

32

2.3. Вывод текста..............................................................................................

34

2.4. Рисование графических примитивов.......................................................

36

2.5. Мастер ClassWizard...................................................................................

38

2.6. Пример создания простейшего приложение Win32 с графикой..........

41

Вопросы для самоконтроля............................................................................

47

Упражнения......................................................................................................

48

3. Простое MFC приложение........................................................................

49

3.1. Microsoft Foundation Classes.....................................................................

49

3.2. Простейшая MFC-программа...................................................................

49

3.3. Классы графического интерфейса...........................................................

51

3.4. Графические объекты...............................................................................

52

3.5. Пример содания приложения с графимой..............................................

57

3.6. Упражнения...............................................................................................

64

4. Программирование элементов управления..........................................

66

4.1. Элементы управления...............................................................................

66

4.2. Создание простого SDI-приложение.......................................................

69

4.3. Пример создания простого SDI-приложения.........................................

73

3

4.4. Использование редактора ресурсов.........................................................

78

4.5. Пример использования редактора ресурсов...........................................

80

4.6. Пример создания и использования диалоговых окон...........................

81

4.7. Создание приложения типа Dialog based ................................................

84

5. Диалоговые окна........................................................................................

89

5.1. Блоки диалога............................................................................................

89

5.2. Класс CDialog и создание диалоговых окон...........................................

90

5.3. Обмен данными посредством диалогового окна ...................................

92

5.4. Использование ClassWizard .....................................................................

95

5.5. Пример создания простой программы для обмена данными

 

между диалоговыми окнами...................................................................

97

6. Хранение данных в программе MFC .....................................................

99

6.1. Хранение данных в памяти – коллекции................................................

99

6.2. Пример создания GUI-программы, использующей коллекции.........

100

6.3. Сохранение данных в файле ..................................................................

102

6.4. Пример создания программы с сохранением данных в файле..........

104

7. Программирование приложений с архитектурой

 

«документ–вид» ............................................................................................

106

7.1. Архитектура «документ–вид»................................................................

106

7.2. Классы SDI-приложения с архитектурой «документ–вид» ...............

107

7.3. Объекты и классы архитектуры «документ–вид»................................

107

7.4. Вид на базе класса CListView ...............................................................

111

7.5. Сериализация...........................................................................................

114

7.6. Работа с документами.............................................................................

120

7.7. Пример создания приложения с архитектурой «документ–вид» ......

126

Часть 2. Разработка приложений

 

в RAD-среде Borland (Turbo) Delphi.............................................

131

8. IDE Delphi ..................................................................................................

131

8.1. Инструменты Delphi ...............................................................................

131

8.2. Обработка событий в Delphi ..................................................................

132

8.3. Форма.......................................................................................................

133

8.4. Создание простого приложения.............................................................

133

9. Программирование элементов управления........................................

142

9.1. Метка – компонент TLabel .....................................................................

142

9.2. Класс TCustomEdit ..................................................................................

144

9.3. Однострочный текстовый редактор – компонент TEdit.....................

146

9.4. Многострочный текстовый редактор – компонент TMemo...............

148

9.5. Кнопка – компонент TButton .................................................................

150

4

9.6. Пример разработки программы с элементами управления................

152

Вопросы для самоконтроля...........................................................................

154

Упражнения....................................................................................................

155

10. Списки TListBox и TComboBox...........................................................

156

10.1. Компонент TListBox .............................................................................

156

10.2. Компонент TComboBox........................................................................

157

10.3. Класс TStrings ........................................................................................

159

10.4. Пример создания приложения.............................................................

160

Вопросы для самоконтроля...........................................................................

163

11. Программирование графики...............................................................

164

11.1. Классы графического интерфейса.......................................................

164

11.2. Пример создания приложения с графикой.........................................

168

11.3. Графические примитивы......................................................................

170

11.4. Пример создания приложения с графическими примитивами........

174

11.5. Рисование фигур....................................................................................

176

11.6. Пример создание приложения с графическими фигурами ..............

180

Вопросы для самоконтроля...........................................................................

181

12. Сохранение объектов.............................................................................

183

12.1. Сохранение объектов в коллекциях....................................................

183

12.2. Сохранение объектов в файлах-сериализация ...................................

183

12.3. Форма.....................................................................................................

184

12.4. Создание меню......................................................................................

187

12.5. Пример создания диалоговой программы для работы

 

с объектами.............................................................................................

187

12.6. Методические указания для программирования диалогов..............

189

Вопросы для самоконтроля...........................................................................

191

13. Механизмы действий и Drag-and-Drop...............................................

193

13.1. Механизм действий...............................................................................

193

13.2. Технология «Drag-and-Drop» ...............................................................

194

13.3. Обработка исключительных ситуаций................................................

199

13.4. Пример создания более сложной диалоговой программы................

202

Методические указания.................................................................................

203

Вопросы для самоконтроля...........................................................................

203

5

ЧАСТЬ I. РАЗРАБОТКА ГРАФИЧЕСКИХ ИНТЕРФЕЙСОВ В СРЕДЕ MICROSOFT VISUALC++

1.ПРИЛОЖЕНИЯ WIN32 API

1.1.Создание нового проекта программы

Для создания нового проект выполните следующие действия. В меню File выберите пункт New. Поскольку ничего в среде разработки нет, то система предложит вам создать новый проект. Появится следующий диалог (рис. 1.1).

Рис. 1.1

Для создания обычного приложения Win32 мы выберем мастера разработки Win32 Application.

Основное назначение мастеров – это облегчить написание программы путем генерации некоторых кусков программы, например, функций начала программы и завершения программы,

6

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

Введем имя проекта и его местоположение на диске. Нажав OK, запустим мастера генерации приложений. Он предложит нам выбрать один из следующих генерируемых им разновидностей проекта Win32 Application. Выберем тип генерируемого проекта «An empty project». Нажав Finish, дадим системе команду на генерацию каркаса приложения. Сгенерировав проект, система предоставит вам информацию о нем.

1.2. Просмотрщик рабочего пространства

Workspace Viewer

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

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

Щелкнув на имени класса правой клавишей мышки, увидим всплывающее меню, которое позволяет нам получить информацию оклассе, добавитьв негоновыеметоды, переменные (рис. 1.2).

Во время просмотра методов и переменных класса мы можем, щелкнув левой клавишей мыши на имени метода или переменной, получить информацию о них (рис. 1.3).

7

Рис. 1.2

Рис. 1.3

Для создания новой переменной или функции вы должны набрать ее описание на глобальном уровне и написать ее код, подчиняясь тем же требованиям, какие применяются в компиляторах C/C++ для DOS.

8

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

1.3. Среда Win32

Основное принципиальное отличие DOS и Windows – это поддерживаемые методологии программирования. DOS поддерживает и ориентирована на программы и языки структурного программирования, а Windows – на программы и языки объект- но-ориентированного программирования.

Другое важное свойство Windows: эта система поддерживает объектное программирование и языки, но объектно-ориен- тированное программирование поддерживается не полностью. В первую очередь это связанно с тем, что Windows планировалась как система, пригодная для использования и процедурными (C, Pascal), и объектно-ориентированными (C++, Smalltalk, Pascal-Delphi) языками. В процедурных языках, перечисленных выше, те свойства, которыми обладает любая обьектная система, а именно: сокрытие данных в объектах и классах, сообщения как метод взаимодействия между объектами, классы, объекты, методы классов без наследования относительно легко применимы

имогут быть добавлены без серьезных изменений языка и средств разработки.

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

Поэтому в среде Windows чрезвычайно развито такое свойство объектного программирования, как сокрытие данных

имеханизм сообщений, а наследование практически отсутствует (исключение – окна Windows, у них есть это свойство, но остальное множество объектов этой среды им не обладает).

9

Отсюда следует другое важное свойство: система Windows должна поддерживать использование объектов и объектных технологий в любом процедурном языке, но не в ущерб объект- но-ориентированным языкам и технологиям.

1.4.Классы и объекты Win32

Всистеме Win32 существуют много самых разнообразных классов (то есть множества объектов, имеющих общую структуру и поведение), наследование от этих классов не поддерживается, кроме абстрактного класса окна, который поддерживается для однократного наследования глубиной 1. В системе есть несколько классов, унаследованных от абстрактного класса окна, которые мы можем использовать в своей программе.

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

Каждый объект Win32в системе идентифицируется своим номером-дескриптором (handle/хендл), который уникален для объектов каждого класса операционной системы и каждого класса, производного от оконного класса, но для объектов разных классов возможна, хотя и мало вероятна, ситуация, когда этот номер совпадет.

При вызове соответствующей функции Win32 для соответствующего классаэтот номер будет одним из параметров функ-

10