Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programming_Windows_95_Part_I.pdf
Скачиваний:
96
Добавлен:
05.06.2014
Размер:
4.61 Mб
Скачать

Ч. Петзолд

Программирование для Windows® 95

в двух томах

Том I

«BHV — Санкт-Петербург»

Дюссельдорф Киев Москва Санкт-Петербург

Содержание

 

ЧАСТЬ I

ВВЕДЕНИЕ .....................................................................................................................................................

9

ГЛАВА 1

README.TXT ................................................................................................................................................

11

Вызов, брошенный программистам ...........................................................................................................................

11

Основные правила.........................................................................................................................................................

12

Краткая история Windows..........................................................................................................................................

13

Краткая история этой книги .....................................................................................................................................

14

Начнем

...........................................................................................................................................................................

15

ГЛАВА 2

H ELLO , W INDOWS 95 .......................................................................................................................................

17

Отличительная особенность Windows ......................................................................................................................

17

Графический ...................................................................................................................интерфейс пользователя

17

Концепции ...............................................................................................................................и обоснование GUI

18

Содержимое ..................................................................................................................интерфейса пользователя

18

Преимущество ............................................................................................................................многозадачности

18

Управление ................................................................................................................................................памятью

19

Независимость ................................................................................графического интерфейса от оборудования

19

Соглашения ......................................................................................................операционной системы Windows

19

Вызовы ......................................................................................................................................................функций

20

Объектно ...................................................................................................-ориентированное программирование

20

Архитектура ..................................................................................................................., управляемая событиями

20

Оконная ...................................................................................................................................................процедура

21

Ваша первая .........................................................................................................................программа для Windows

21

Что в ......................................................................................................................этой программе неправильно?

22

Файлы ..................................................................................................................................................HELLOWIN

22

Make .................................................................................................................................................................-файл

25

Файл .....................................................................................................исходного текста программы на языке С

25

Вызовы ......................................................................................................................................функций Windows

26

Идентификаторы .........................................................................................., написанные прописными буквами

26

Новые .................................................................................................................................................типы данных

27

Описатели..................................................................................................................................................................

27

Венгерская ..................................................................................................................................................нотация

28

Точка ...........................................................................................................................................входа программы

28

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

29

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

31

Отображение ....................................................................................................................................................окна

32

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

33

Оконная ...................................................................................................................................................процедура

34

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

34

Воспроизведение .........................................................................................................................звукового файла

35

Сообщение ..........................................................................................................................................WM_PAINT

35

Сообщение ....................................................................................................................................WM_DESTROY

36

Сложности ............................................................................................................программирования для Windows

37

Не вызывай .............................................................................................................................меня, я вызову тебя

37

Синхронные ................................................................................................................и асинхронные сообщения

38

Думайте ..................................................................................................................................................о ближнем

39

Кривая .......................................................................................................................................................обучения

39

ГЛАВА 3 ........................................................................................................................................

Р ИСОВАНИЕ ТЕКСТА

41

Рисование ...............................................................................................................................................и обновление

41

Сообщение ..........................................................................................................................................WM_PAINT

42

Действительные ........................................................................................и недействительные прямоугольники

42

Введение ...........................................................................................в графический интерфейс устройства (GDI)

43

Контекст ................................................................................................................................................устройства

43

Получение ................................................................................описателя контекста устройства. Первый метод

43

Структура ......................................................................................................................информации о рисовании

44

Получение ................................................................................описателя контекста устройства. Второй метод

45

Функция ..............................................................................................................................TextOut. Подробности

46

Системный ....................................................................................................................................................шрифт

47

Размер .........................................................................................................................................................символа

47

Метрические ......................................................................................................параметры текста. Подробности

48

Форматирование ...........................................................................................................................................текста

49

4

Соединим все вместе................................................................................................................................................

50

Оконная процедура программы SYSMETS1.С......................................................................................................

53

Не хватает места!......................................................................................................................................................

54

Размер рабочей области...........................................................................................................................................

55

Полосы прокрутки .......................................................................................................................................................

55

Диапазон и положение полос прокрутки ...............................................................................................................

56

Сообщения полос прокрутки...................................................................................................................................

57

Прокрутка в программе SYSMETS.........................................................................................................................

58

Структурирование вашей программы для рисования...........................................................................................

62

Создание улучшенной прокрутки...........................................................................................................................

62

Мне не нравится пользоваться мышью ..................................................................................................................

67

ГЛАВА 4 ГЛАВНОЕ О ГРАФИКЕ .......................................................................................................................................

69

Концепция GDI..............................................................................................................................................................

69

Структура GDI ............................................................................................................................................................

70

Типы функций ..........................................................................................................................................................

70

Примитивы GDI........................................................................................................................................................

71

Другие аспекты.........................................................................................................................................................

72

Контекст устройства ................................................................................................................................................

72

Получение описателя контекста устройства..........................................................................................................

72

Получение информации из контекста устройства.................................................................................................

74

Программа DEVCAPS1............................................................................................................................................

74

Размер устройства ....................................................................................................................................................

77

О цветах.....................................................................................................................................................................

77

Атрибуты контекста устройства .............................................................................................................................

78

Сохранение контекста устройства ..........................................................................................................................

79

Рисование отрезков .....................................................................................................................................................

80

Ограничивающий прямоугольник ..........................................................................................................................

84

Сплайны Безье ..........................................................................................................................................................

89

Использование стандартных перьев .......................................................................................................................

93

Создание, выбор и удаление перьев .......................................................................................................................

94

Закрашивание пустот ...............................................................................................................................................

96

Режимы рисования ...................................................................................................................................................

96

Рисование закрашенных областей..............................................................................................................................

97

Функция Polygon и режим закрашивания многоугольника..................................................................................

98

Закрашивание внутренней области.........................................................................................................................

99

Режим отображения ................................................................................................................................................

100

Координаты устройства (физические координаты) и логические координаты................................................

101

Системы координат устройства ............................................................................................................................

102

Область вывода и окно...........................................................................................................................................

102

Работа в режиме MM_TEXT .................................................................................................................................

103

Метрические режимы отображения .....................................................................................................................

105

Ваши собственные режимы отображения............................................................................................................

106

Программа WHATSIZE .........................................................................................................................................

109

Прямоугольники, регионы и отсечение ....................................................................................................................

112

Работа с прямоугольниками ..................................................................................................................................

112

Случайные прямоугольники..................................................................................................................................

113

Создание и рисование регионов............................................................................................................................

117

Отсечения: прямоугольники и регионы ...............................................................................................................

118

Программа CLOVER..............................................................................................................................................

118

Пути ............................................................................................................................................................................

121

Создание и воспроизведение путей ......................................................................................................................

121

Расширенные перья................................................................................................................................................

122

Bits and Blts .................................................................................................................................................................

125

Цвета и битовые образы.........................................................................................................................................

126

Битовые образы, не зависящие от устройства (DIB)...........................................................................................

126

Файл DIB .................................................................................................................................................................

127

Упакованный формат хранения DIB ....................................................................................................................

128

Отображение DIB ...................................................................................................................................................

128

Преобразование DIB в объекты "битовые образы"...............................................................................................

128

Битовый образ — объект GDI..................................................................................................................................

129

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

129

Формат монохромного битового образа ..............................................................................................................

130

Формат цветного битового образа........................................................................................................................

131

Контекст памяти.....................................................................................................................................................

131

 

 

5

Мощная функция BitBlt..........................................................................................................................................

132

Перенос битов с помощью функции BitBlt ..........................................................................................................

135

Функция DrawBitmap .............................................................................................................................................

136

Использование других ROP кодов........................................................................................................................

136

Дополнительные сведения о контексте памяти...................................................................................................

138

Преобразования цветов..........................................................................................................................................

141

Преобразования режимов отображения ...............................................................................................................

141

Растяжение битовых образов с помощью функции StretchBlt ...........................................................................

141

Кисти и битовые образы ........................................................................................................................................

142

Метафайлы.................................................................................................................................................................

143

Простое использование метафайлов памяти........................................................................................................

144

Сохранение метафайлов на диске .........................................................................................................................

147

Расширенные метафайлы .........................................................................................................................................

147

Делаем это лучше ...................................................................................................................................................

147

Базовая процедура ..................................................................................................................................................

148

Заглянем внутрь......................................................................................................................................................

151

Вывод точных изображений..................................................................................................................................

153

Текст и шрифты ........................................................................................................................................................

154

Вывод простого текста...........................................................................................................................................

154

Атрибуты контекста устройства и текст ..............................................................................................................

156

Использование стандартных шрифтов .................................................................................................................

157

Типы шрифтов ........................................................................................................................................................

157

Шрифты TrueType ..................................................................................................................................................

158

Система EZFONT ...................................................................................................................................................

158

Внутренняя работа .................................................................................................................................................

161

Форматирование простого текста .........................................................................................................................

162

Работа с абзацами...................................................................................................................................................

163

ЧАСТЬ II

СРЕДСТВА ВВОДА...................................................................................................................................

169

ГЛАВА 5

КЛАВИАТУРА .................................................................................................................................................

171

Клавиатура. Основные понятия...............................................................................................................................

171

Игнорирование клавиатуры...................................................................................................................................

171

Фокус ввода.............................................................................................................................................................

172

Аппаратные и символьные сообщения.................................................................................................................

172

Аппаратные сообщения.............................................................................................................................................

173

Системные и несистемные аппаратные сообщения клавиатуры .......................................................................

173

Переменная lParam ................................................................................................................................................

173

Виртуальные коды клавиш....................................................................................................................................

175

Положения клавиш сдвига и клавиш-переключателей.......................................................................................

177

Использование сообщений клавиатуры ...............................................................................................................

178

Модернизация SYSMETS: добавление интерфейса клавиатуры............................................................................

178

Логика обработки сообщений WM_KEYDOWN.................................................................................................

178

Посылка асинхронных сообщений .......................................................................................................................

179

Символьные сообщения..............................................................................................................................................

184

Сообщения WM_CHAR .........................................................................................................................................

185

Сообщения немых символов .................................................................................................................................

186

Взгляд на сообщения от клавиатуры .......................................................................................................................

186

Каретка (не курсор) ...................................................................................................................................................

190

Функции работы с кареткой ..................................................................................................................................

190

Программа TYPER .................................................................................................................................................

191

Наборы символов Windows ........................................................................................................................................

196

Набор символов OEM ............................................................................................................................................

197

Набор символов ANSI............................................................................................................................................

198

Наборы символов OEM, ANSI и шрифты ............................................................................................................

198

Международные интересы .......................................................................................................................................

199

Работа с набором символов ...................................................................................................................................

199

Связь с MS-DOS .....................................................................................................................................................

199

Использование цифровой клавиатуры..................................................................................................................

200

Решение проблемы с использованием системы UNICODE в Windows NT ......................................................

201

ГЛАВА 6

МЫШЬ............................................................................................................................................................

203

Базовые знания о мыши .............................................................................................................................................

203

Несколько кратких определений...........................................................................................................................

203

Сообщения мыши, связанные с рабочей областью окна ........................................................................................

204

Простой пример обработки сообщений мыши ....................................................................................................

205

6

Обработка клавиш <Shift>.....................................................................................................................................

208

Двойные щелчки клавиш мыши............................................................................................................................

209

Сообщения мыши нерабочей области......................................................................................................................

209

Сообщение теста попадания..................................................................................................................................

210

Сообщения порождают сообщения ......................................................................................................................

211

Тестирование попадания в ваших программах........................................................................................................

211

Гипотетический пример.........................................................................................................................................

211

Пример программы ................................................................................................................................................

212

Эмуляция мыши с помощью клавиатуры ............................................................................................................

215

Добавление интерфейса клавиатуры к программе CHECKER ..........................................................................

216

Использование дочерних окон для тестирования попадания.............................................................................

219

Дочерние окна в программе CHECKER...............................................................................................................

220

Захват мыши ..............................................................................................................................................................

223

Рисование прямоугольника ...................................................................................................................................

224

Решение проблемы — захват ................................................................................................................................

227

Программа BLOKOUT2.........................................................................................................................................

227

ГЛАВА 7 ТАЙМЕР.........................................................................................................................................................

231

Основы использования таймера ...............................................................................................................................

231

Система и таймер ...................................................................................................................................................

232

Таймерные сообщения не являются асинхронными ...........................................................................................

232

Использование таймера: три способа.....................................................................................................................

233

Первый способ........................................................................................................................................................

233

Второй способ.........................................................................................................................................................

237

Третий способ.........................................................................................................................................................

239

Использование таймера для часов............................................................................................................................

240

Позиционирование и изменение размеров всплывающего окна........................................................................

243

Получение даты и времени....................................................................................................................................

243

Обеспечение международной поддержки............................................................................................................

243

Создание аналоговых часов...................................................................................................................................

244

Стандартное время Windows ...................................................................................................................................

248

Анимация.....................................................................................................................................................................

249

ГЛАВА 8 ДОЧЕРНИЕ ОКНА УПРАВЛЕНИЯ......................................................................................................................

253

Класс кнопок ...............................................................................................................................................................

254

Создание дочерних окон........................................................................................................................................

257

Сообщения дочерних окон родительскому окну.................................................................................................

258

Сообщения родительского окна дочерним окнам...............................................................................................

258

Нажимаемые кнопки ..............................................................................................................................................

259

Флажки ....................................................................................................................................................................

259

Переключатели .......................................................................................................................................................

260

Окна группы............................................................................................................................................................

260

Изменение текста кнопки ......................................................................................................................................

260

Видимые и доступные кнопки ..............................................................................................................................

261

Кнопки и фокус ввода............................................................................................................................................

261

Дочерние окна управления и цвета ...........................................................................................................................

262

Системные цвета ....................................................................................................................................................

262

Цвета кнопок...........................................................................................................................................................

263

Сообщение WM_CTLCOLORBTN .......................................................................................................................

263

Кнопки, определяемые пользователем.................................................................................................................

264

Класс статических дочерних окон ...........................................................................................................................

269

Класс полос прокрутки ..............................................................................................................................................

270

Программа COLORS1 ............................................................................................................................................

271

Интерфейс клавиатуры, поддерживаемый автоматически.................................................................................

276

Введение новой оконной процедуры....................................................................................................................

276

Закрашивание фона ................................................................................................................................................

277

Окрашивание полос прокрутки и статического текста.......................................................................................

278

Класс редактирования...............................................................................................................................................

278

Стили класса редактирования ...............................................................................................................................

280

Коды уведомления управляющих окон редактирования....................................................................................

281

Использование управляющих окон редактирования ..........................................................................................

281

Сообщения управляющему окну редактирования ..............................................................................................

281

Класс окна списка.......................................................................................................................................................

282

Стили окна списка..................................................................................................................................................

283

Добавление строк в окно списка...........................................................................................................................

283

Выбор и извлечение элементов списка ................................................................................................................

284

 

7

Получение сообщений от окон списка .................................................................................................................

285

Простое приложение, использующее окно списка .................................................................................................

285

Список файлов........................................................................................................................................................

288

Утилита Head для Windows ...................................................................................................................................

289

ЧАСТЬ III ИСПОЛЬЗОВАНИЕ РЕСУРСОВ ...........................................................................................................

293

ГЛАВА 9 ЗНАЧКИ, КУРСОРЫ, БИТОВЫЕ ОБРАЗЫ И СТРОКИ ..........................................................................................

295

Компиляция ресурсов..................................................................................................................................................

295

Значки и курсоры ........................................................................................................................................................

296

Редактор изображений ...........................................................................................................................................

298

Получение описателя значков...............................................................................................................................

300

Использование значков в вашей программе ........................................................................................................

301

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

301

Битовые образы: картинки в пикселях .................................................................................................................

302

Использование битовых образов и кистей ...........................................................................................................

302

Символьные строки....................................................................................................................................................

305

Использование ресурсов-символьных строк........................................................................................................

305

Использование ресурсов-строк в функции MessageBox .....................................................................................

305

Ресурсы, определяемые пользователем ...................................................................................................................

306

ГЛАВА 10 МЕНЮ И БЫСТРЫЕ КЛАВИШИ .......................................................................................................................

313

Меню............................................................................................................................................................................

313

Структура меню......................................................................................................................................................

314

Шаблон меню..........................................................................................................................................................

314

Ссылки на меню в вашей программе....................................................................................................................

315

Меню и сообщения.................................................................................................................................................

316

Образец программы................................................................................................................................................

318

Этикет при организации меню ..............................................................................................................................

322

Сложный способ определения меню ....................................................................................................................

322

Третий подход к определению меню....................................................................................................................

324

Независимые всплывающие меню........................................................................................................................

324

Использование системного меню .........................................................................................................................

328

Изменение меню.....................................................................................................................................................

330

Другие команды меню ...........................................................................................................................................

330

Нестандартный подход к меню .............................................................................................................................

331

Использование в меню битовых образов..................................................................................................................

335

Два способа создания битовых образов для меню ..............................................................................................

341

Контекст памяти .....................................................................................................................................................

341

Создание битового образа, содержащего текст ...................................................................................................

341

Масштабирование битовых образов.....................................................................................................................

342

Соберем все вместе ................................................................................................................................................

343

Добавление интерфейса клавиатуры ....................................................................................................................

344

Быстрые клавиши ......................................................................................................................................................

344

Зачем нужны быстрые клавиши? ..........................................................................................................................

344

Некоторые правила назначения быстрых клавиш...............................................................................................

345

Таблица быстрых клавиш ......................................................................................................................................

345

Загрузка таблицы быстрых клавиш ......................................................................................................................

346

Преобразование нажатий клавиш клавиатуры ....................................................................................................

346

Получение сообщений быстрых клавиш..............................................................................................................

347

Программа POPPAD, имеющая меню и быстрые клавиши................................................................................

348

Разрешение пунктов меню.....................................................................................................................................

352

Обработка опций меню..........................................................................................................................................

353

ГЛАВА 11 ОКНА ДИАЛОГА..............................................................................................................................................

355

Модальные окна диалога............................................................................................................................................

355

Создание окна диалога About................................................................................................................................

355

Шаблон окна диалога.............................................................................................................................................

358

Диалоговая процедура............................................................................................................................................

359

Вызов окна диалога ................................................................................................................................................

360

Дополнительная информация о стиле окна диалога ...........................................................................................

361

Дополнительная информация об определении дочерних окон элементов управления...................................

362

Более сложное окно диалога .................................................................................................................................

364

Работа с дочерними элементами управления окна диалога ...............................................................................

368

Кнопки OK и Cancel ...............................................................................................................................................

370

Позиции табуляции и группы................................................................................................................................

371

Рисование в окне диалога ......................................................................................................................................

373

8

Использование с окном диалога других функций...............................................................................................

373

Определение собственных окон управления .......................................................................................................

373

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

378

Информация во всплывающих окнах ...................................................................................................................

379

Немодальные окна диалога........................................................................................................................................

379

Различия между модальными и немодальными окнами диалога.......................................................................

380

Новая программа COLORS....................................................................................................................................

381

Программа HEXCALC: обычное окно или окно диалога? .................................................................................

385

Творческое использование идентификаторов дочерних окон элементов управления.....................................

390

Диалоговые окна общего пользования ......................................................................................................................

391

Модернизированная программа POPPAD............................................................................................................

391

Изменение шрифта.................................................................................................................................................

407

Поиск и замена........................................................................................................................................................

408

Программа для Windows, содержащая всего один вызов функции...................................................................

408

ГЛАВА 12 СОВРЕМЕННЫЙ ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС ......................................................................................

411

Основы элементов управления общего пользования ...............................................................................................

412

Инициализация библиотеки ..................................................................................................................................

413

Создание элементов управления общего пользования .......................................................................................

413

Стили элементов управления общего пользования.............................................................................................

414

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

417

Уведомляющие сообщения от элементов управления общего пользования ....................................................

418

Элементы управления главного окна........................................................................................................................

421

Панели инструментов ............................................................................................................................................

421

Создание панели инструментов ............................................................................................................................

422

Строка состояния....................................................................................................................................................

434

Программа GADGETS ...........................................................................................................................................

438

Наборы страниц свойств..........................................................................................................................................

465

Создание набора страниц свойств ........................................................................................................................

466

Процедуры диалогового окна страницы свойств ................................................................................................

470

Программа PROPERTY .........................................................................................................................................

475

Часть I

Введение

Соседние файлы в предмете Операционные системы