- •Содержание
- •Управление памятью: хорошо, плохо и ужасно
- •Сегментированная память
- •Промежуточные решения
- •И, наконец, 32 бита
- •Выделение памяти
- •Библиотечные функции C
- •Фундаментальное выделение памяти в Windows 95
- •Перемещаемая память
- •Удаляемая память
- •Другие функции и флаги
- •Хорошо ли это?
- •Функции работы с "кучей"
- •Файловый ввод/вывод
- •Старый путь
- •Отличия Windows 95
- •Ввод/вывод с использованием файлов, проецируемых в память
- •Режимы многозадачности
- •Многозадачность в DOS
- •Невытесняющая многозадачность
- •Решения, использующие многопоточность
- •Многопоточная архитектура
- •Коллизии, возникающие при использовании потоков
- •Преимущества Windows
- •Новая программа! Усовершенствованная программа! Многопоточная!
- •Многопоточность в Windows 95
- •И снова случайные прямоугольники
- •Задание на конкурсе программистов
- •Решение с использованием многопоточности
- •О пользе использования функции Sleep
- •Синхронизация потоков
- •Критический раздел
- •Объект Mutex
- •Программа BIGJOB1
- •Объект Event
- •Локальная память потока
- •Печать, буферизация и функции печати
- •Контекст принтера
- •Формирование параметров для функции CreateDC
- •Измененная программа DEVCAPS
- •Вызов функции PrinterProperties
- •Проверка возможности работы с битовыми блоками (BitBlt)
- •Программа FORMFEED
- •Печать графики и текста
- •Каркас программы печати
- •Прерывание печати с помощью процедуры Abort
- •Реализация процедуры прерывания
- •Добавление диалогового окна печати
- •Добавление печати к программе POPPAD
- •Обработка кодов ошибок
- •Техника разбиения на полосы
- •Разбиение на полосы
- •Реализация разбиения страницы на полосы
- •Принтер и шрифты
- •Глава 16 Буфер обмена
- •Простое использование буфера обмена
- •Стандартные форматы данных буфера обмена
- •Передача текста в буфер обмена
- •Получение текста из буфера обмена
- •Открытие и закрытие буфера обмена
- •Использование буфера обмена с битовыми образами
- •Метафайл и картина метафайла
- •Более сложное использование буфера обмена
- •Использование нескольких элементов данных
- •Отложенное исполнение
- •Нестандартные форматы данных
- •Соответствующая программа просмотра буфера обмена
- •Цепочка программ просмотра буфера обмена
- •Функции и сообщения программы просмотра буфера обмена
- •Простая программа просмотра буфера обмена
- •Основные концепции
- •Приложение, раздел и элемент
- •Типы диалогов
- •Символьные строки и атомы
- •Программа сервер DDE
- •Программа DDEPOP1
- •Сообщение WM_DDE_INITIATE
- •Оконная процедура ServerProc
- •Функция PostDataMessage программы DDEPOP1
- •Сообщение WM_DDE_ADVISE
- •Обновление элементов данных
- •Сообщение WM_DDE_UNADVISE
- •Сообщение WM_DDE_TERMINATE
- •Программа-клиент DDE
- •Инициирование диалога DDE
- •Сообщение WM_DDE_DATA
- •Сообщение WM_DDE_TERMINATE
- •Управляющая библиотека DDE
- •Концептуальные различия
- •Реализация DDE с помощью DDEML
- •Элементы MDI
- •Windows 95 и MDI
- •Пример программы
- •Три меню
- •Инициализация программы
- •Создание дочерних окон
- •Дополнительная информация об обработке сообщений в главном окне
- •Дочерние окна документов
- •Освобождение захваченных ресурсов
- •Сила оконной процедуры
- •Основы библиотек
- •Библиотека: одно слово, множество значений
- •Пример простой DLL
- •Разделяемая память в DLL
- •Библиотека STRLIB
- •Точка входа/выхода библиотеки
- •Программа STRPROG
- •Работа программы STRPROG
- •Разделение данных между экземплярами программы STRPROG
- •Некоторые ограничения библиотек
- •Динамическое связывание без импорта
- •Библиотеки, содержащие только ресурсы
- •Глава 20 Что такое OLE?
- •Основы OLE
- •Связь с библиотеками OLE
- •Расшифровка кода результата
- •Интерфейсы модели составного объекта (COM-интерфейсы)
- •Услуги интерфейса IUnknown
- •Является ли OLE спецификацией клиент/сервер?
- •Сервер закрытого компонента
- •IMALLOC.DLL
- •Теперь о макросах
- •Услуги, предоставляемые интерфейсом IUnknown
- •Клиент закрытого компонента
- •Сервер открытого компонента
- •Назначение реестра
- •Способы генерации и использования идентификаторов CLSID
- •Компонент фабрика классов
- •Управление временем жизни сервера
- •Клиент открытого компонента
- •Заключение
Ч. Петзолд
Программирование для Windows® 95
в двух томах
Том II
«BHV — Санкт-Петербург»
Дюссельдорф Киев Москва Санкт-Петербург
Содержание |
|
|
ЧАСТЬ IV ЯДРО И ПРИНТЕР........................................................................................................................................ |
7 |
|
ГЛАВА 13 |
УПРАВЛЕНИЕ ПАМЯТЬЮ И ФАЙЛОВЫЙ ВВОД/ВЫВОД ..................................................................................... |
9 |
Управление памятью: хорошо, плохо и ужасно.......................................................................................................... |
9 |
|
Сегментированная память ......................................................................................................................................... |
9 |
|
Промежуточные решения ........................................................................................................................................ |
11 |
|
И, наконец, 32 бита................................................................................................................................................... |
11 |
|
Выделение памяти........................................................................................................................................................ |
14 |
|
Библиотечные функции C........................................................................................................................................ |
14 |
|
Фундаментальное выделение памяти в Windows 95 ............................................................................................. |
14 |
|
Перемещаемая память.............................................................................................................................................. |
15 |
|
Удаляемая память..................................................................................................................................................... |
16 |
|
Другие функции и флаги.......................................................................................................................................... |
16 |
|
Хорошо ли это?......................................................................................................................................................... |
16 |
|
Функции управления виртуальной памятью.......................................................................................................... |
17 |
|
Функции работы с "кучей" ...................................................................................................................................... |
17 |
|
Файловый ввод/вывод................................................................................................................................................... |
18 |
|
Старый путь .............................................................................................................................................................. |
18 |
|
Отличия Windows 95 ................................................................................................................................................ |
18 |
|
Функции файлового ввода/вывода, поддерживаемые Windows 95 ..................................................................... |
18 |
|
Ввод/вывод с использованием файлов, проецируемых в память......................................................................... |
19 |
|
ГЛАВА 14 |
МНОГОЗАДАЧНОСТЬ И МНОГОПОТОЧНОСТЬ ............................................................................................. |
21 |
Режимы многозадачности.......................................................................................................................................... |
21 |
|
Многозадачность в DOS .......................................................................................................................................... |
21 |
|
Невытесняющая многозадачность .......................................................................................................................... |
22 |
|
Presentation Manager и последовательная очередь сообщений............................................................................ |
23 |
|
Решения, использующие многопоточность ........................................................................................................... |
23 |
|
Многопоточная архитектура ................................................................................................................................... |
23 |
|
Коллизии, возникающие при использовании потоков.......................................................................................... |
24 |
|
Преимущества Windows .......................................................................................................................................... |
24 |
|
Новая программа! Усовершенствованная программа! Многопоточная! ............................................................ |
25 |
|
Многопоточность в Windows 95................................................................................................................................. |
25 |
|
И снова случайные прямоугольники ...................................................................................................................... |
25 |
|
Задание на конкурсе программистов...................................................................................................................... |
28 |
|
Решение с использованием многопоточности ....................................................................................................... |
34 |
|
Еще есть проблемы?................................................................................................................................................. |
40 |
|
О пользе использования функции Sleep ................................................................................................................. |
41 |
|
Синхронизация потоков............................................................................................................................................... |
41 |
|
Критический раздел ................................................................................................................................................. |
42 |
|
Объект Mutex ............................................................................................................................................................ |
43 |
|
Уведомления о событиях............................................................................................................................................. |
43 |
|
Программа BIGJOB1................................................................................................................................................ |
43 |
|
Объект Event ............................................................................................................................................................. |
47 |
|
Локальная память потока ........................................................................................................................................ |
50 |
|
ГЛАВА 15 |
ИСПОЛЬЗОВАНИЕ ПРИНТЕРА ..................................................................................................................... |
53 |
Печать, буферизация и функции печати ................................................................................................................... |
53 |
|
Контекст принтера..................................................................................................................................................... |
56 |
|
Формирование параметров для функции CreateDC .............................................................................................. |
57 |
|
Измененная программа DEVCAPS ......................................................................................................................... |
60 |
|
Вызов функции PrinterProperties ............................................................................................................................ |
67 |
|
Проверка возможности работы с битовыми блоками (BitBlt) .............................................................................. |
68 |
|
Программа FORMFEED .............................................................................................................................................. |
68 |
|
Печать графики и текста .......................................................................................................................................... |
70 |
|
Каркас программы печати ....................................................................................................................................... |
72 |
|
Прерывание печати с помощью процедуры Abort ................................................................................................ |
74 |
|
Как Windows использует функцию AbortProc....................................................................................................... |
75 |
|
Реализация процедуры прерывания........................................................................................................................ |
75 |
|
Добавление диалогового окна печати..................................................................................................................... |
77 |
|
Добавление печати к программе POPPAD............................................................................................................. |
81 |
|
Обработка кодов ошибок......................................................................................................................................... |
86 |
4
Техника разбиения на полосы ...................................................................................................................................... |
87 |
|
Разбиение на полосы................................................................................................................................................ |
87 |
|
Реализация разбиения страницы на полосы........................................................................................................... |
90 |
|
Принтер и шрифты..................................................................................................................................................... |
92 |
|
ЧАСТЬ V СВЯЗИ И ОБМЕН ДАННЫМИ................................................................................................................ |
95 |
|
ГЛАВА 16 |
БУФЕР ОБМЕНА........................................................................................................................................... |
97 |
Простое использование буфера обмена..................................................................................................................... |
97 |
|
Стандартные форматы данных буфера обмена ..................................................................................................... |
97 |
|
Передача текста в буфер обмена............................................................................................................................. |
98 |
|
Получение текста из буфера обмена....................................................................................................................... |
99 |
|
Открытие и закрытие буфера обмена ..................................................................................................................... |
99 |
|
Использование буфера обмена с битовыми образами ........................................................................................ |
100 |
|
Метафайл и картина метафайла ............................................................................................................................ |
101 |
|
Более сложное использование буфера обмена......................................................................................................... |
104 |
|
Использование нескольких элементов данных.................................................................................................... |
104 |
|
Отложенное исполнение........................................................................................................................................ |
105 |
|
Нестандартные форматы данных.......................................................................................................................... |
106 |
|
Соответствующая программа просмотра буфера обмена .................................................................................. |
108 |
|
Цепочка программ просмотра буфера обмена..................................................................................................... |
108 |
|
Функции и сообщения программы просмотра буфера обмена .......................................................................... |
108 |
|
Простая программа просмотра буфера обмена.................................................................................................... |
110 |
|
ГЛАВА 17 |
ДИНАМИЧЕСКИЙ ОБМЕН ДАННЫМИ......................................................................................................... |
115 |
Основные концепции................................................................................................................................................... |
116 |
|
Приложение, раздел и элемент.............................................................................................................................. |
116 |
|
Типы диалогов ........................................................................................................................................................ |
116 |
|
Символьные строки и атомы................................................................................................................................. |
119 |
|
Программа сервер DDE ............................................................................................................................................. |
120 |
|
Программа DDEPOP1 ............................................................................................................................................ |
132 |
|
Сообщение WM_DDE_INITIATE......................................................................................................................... |
132 |
|
Оконная процедура ServerProc ............................................................................................................................. |
133 |
|
Сообщение WM_DDE_REQUEST ........................................................................................................................ |
133 |
|
Функция PostDataMessage программы DDEPOP1.............................................................................................. |
134 |
|
Сообщение WM_DDE_ADVISE ........................................................................................................................... |
135 |
|
Обновление элементов данных............................................................................................................................. |
136 |
|
Сообщение WM_DDE_UNADVISE...................................................................................................................... |
136 |
|
Сообщение WM_DDE_TERMINATE ................................................................................................................... |
137 |
|
Программа-клиент DDE............................................................................................................................................ |
137 |
|
Инициирование диалога DDE ............................................................................................................................... |
144 |
|
Сообщение WM_DDE_DATA............................................................................................................................... |
144 |
|
Сообщение WM_DDE_TERMINATE ................................................................................................................... |
145 |
|
Управляющая библиотека DDE................................................................................................................................ |
145 |
|
Концептуальные различия..................................................................................................................................... |
145 |
|
Реализация DDE с помощью DDEML .................................................................................................................. |
146 |
|
ГЛАВА 18 |
МНОГООКОННЫЙ ИНТЕРФЕЙС................................................................................................................. |
157 |
Элементы MDI ........................................................................................................................................................... |
157 |
|
Windows 95 и MDI....................................................................................................................................................... |
158 |
|
Пример программы .................................................................................................................................................... |
159 |
|
Три меню................................................................................................................................................................. |
169 |
|
Инициализация программы................................................................................................................................... |
169 |
|
Создание дочерних окон............................................................................................................................................. |
170 |
|
Дополнительная информация об обработке сообщений в главном окне................................................................... |
170 |
|
Дочерние окна документов........................................................................................................................................ |
171 |
|
Освобождение захваченных ресурсов ...................................................................................................................... |
172 |
|
Сила оконной процедуры............................................................................................................................................ |
172 |
|
ГЛАВА 19 |
ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ ..................................................................................... |
173 |
Основы библиотек...................................................................................................................................................... |
173 |
|
Библиотека: одно слово, множество значений .................................................................................................... |
174 |
|
Пример простой DLL................................................................................................................................................. |
174 |
|
Разделяемая память в DLL ....................................................................................................................................... |
177 |
|
Библиотека STRLIB ............................................................................................................................................... |
178 |
|
Точка входа/выхода библиотеки........................................................................................................................... |
181 |
|
Программа STRPROG............................................................................................................................................ |
181 |
|
Работа программы STRPROG ............................................................................................................................... |
185 |
|
|
5 |
Разделение данных между экземплярами программы STRPROG ..................................................................... |
186 |
|
Некоторые ограничения библиотек......................................................................................................................... |
186 |
|
Динамическое связывание без импорта ................................................................................................................... |
187 |
|
Библиотеки, содержащие только ресурсы.............................................................................................................. |
187 |
|
ГЛАВА 20 |
ЧТО ТАКОЕ OLE?...................................................................................................................................... |
193 |
Основы OLE ................................................................................................................................................................ |
194 |
|
Связь с библиотеками OLE.................................................................................................................................... |
194 |
|
Расшифровка кода результата ............................................................................................................................... |
195 |
|
Интерфейсы модели составного объекта (COM-интерфейсы)........................................................................... |
197 |
|
Услуги интерфейса IUnknown ............................................................................................................................... |
201 |
|
Является ли OLE спецификацией клиент/сервер?............................................................................................... |
204 |
|
Сервер закрытого компонента................................................................................................................................. |
204 |
|
IMALLOC.DLL ....................................................................................................................................................... |
208 |
|
Теперь о макросах .................................................................................................................................................. |
209 |
|
Услуги, предоставляемые интерфейсом IUnknown ............................................................................................. |
211 |
|
Клиент закрытого компонента................................................................................................................................ |
213 |
|
Сервер открытого компонента ............................................................................................................................... |
221 |
|
Назначение реестра ................................................................................................................................................ |
228 |
|
Способы генерации и использования идентификаторов CLSID........................................................................ |
230 |
|
Компонент фабрика классов.................................................................................................................................. |
231 |
|
Управление временем жизни сервера................................................................................................................... |
233 |
|
Клиент открытого компонента .............................................................................................................................. |
235 |
|
Заключение |
.................................................................................................................................................................. |
242 |
Часть IV
Ядро и принтер