Операционная система Microsoft Windows 3.1 для программиста -том 3

         

Классификация типов меню

Введение
Меню
Классификация типов меню

Создание меню при помощи шаблона
Создание шаблона меню

Подключение меню к окну приложения
Подключение меню при регистрации класса окна
Подключение меню при создании окна
Сообщения, поступающие от меню
Сообщение WM_INITMENU
Сообщение WM_INITMENUPOPUP
Сообщение WM_COMMAND


Сообщение WM_SYSCOMMAND
Приложение MENU
Листинг 1.1. Файл menu/menu.cpp

Листинг 1.2. Файл menu/menu.hpp
Листинг 1.3. Файл menu/menu.rc
Листинг 1.4. Файл menu/menu.def
Функции для работы с меню
Создание меню
Добавление строк
Изменение строк
Удаление строк

Активизация и блокирование строк меню
Отметка строк
Выделение строк
Получение информации
Идентификатор меню
Идентификатор временного меню
Проверка идентификатора меню
Количество элементов в меню
Идентификатор элемента меню
Текст строки меню

Флаги состояния элемента меню
Приложение DMENU
Листинг 1.5. Файл dmenu/dmenu.cpp
Листинг 1.6. Файл dmenu/dmenu.hpp

Листинг 1.7. Файл dmenu/dmenu.rc
Системное меню
Плавающее меню
Использование плавающего меню в органе управления EDIT
Акселераторы
Описание таблицы акселераторов

Загрузка таблицы акселераторов
Изменения в цикле обработки сообщений
Орган управления TOOLBAR
Приложение SMARTPAD
Листинг 1.8. Файл smartpad/smartpad.cpp

Листинг 1.9. Файл smartpad/smartpad.hpp
Листинг 1.10. Файл smartpad/smartpad.rc
Листинг 1.11. Файлы smartpad/*.bmp
Листинг 1.12. Файл smartpad/toolbar.hpp
Листинг 1.13. Файл smartpad/toolbar.cpp

Листинг 1.14. Файл smartpad/drawbmp.cpp
Листинг 1.15. Файл smartpad/smartpad.def
Графика в меню
Приложение GMENU
Листинг 1.16. Файл gmenu/gmenu.cpp

Листинг 1.17. Файл gmenu/gmenu.hpp
Листинг 1.18. Файл gmenu/gmenu.rc
Листинг 1.19. Файлы gmenu/*.bmp
Листинг 1.20. Файл gmenu/gmenu.def
Управление памятью
Особенности защищенного режима работы процессора
Адресация памяти в реальном режиме

Адресация памяти в защищенном режиме
Листинг 2.1. Файл selector/selector.cpp
Листинг 2.2. Файл selector/selector.def
Обработка прерываний в защищенном режиме
Память в различных режимах работы Windows

Стандартный режим работы
Расширенный режим работы
Глобальная и локальная область памяти
Типы сегментов
Работа с памятью в приложениях Windows
Глобальная динамическая память
Получение глобального блока памяти
Фиксирование и расфиксирование блока памяти

Определение идентификатора блока памяти по его адресу
Работа с удаляемыми блоками памяти
Изменение блока памяти
Определение размера блока памяти
Дефрагментация памяти
Получение памяти в первом мегабайте адресного пространства
Освобождение глобального блока памяти
Фиксирование линейного адреса блока памяти
Фиксирование страниц блока памяти
Приложение GMEM

Листинг 2.3. Файл gmem/gmem.cpp
Листинг 2.4. Файл gmem/gmem.def
Локальная динамическая память
Получение локального блока памяти
Определение характеристик локального блока памяти

Дефрагментация локального блока памяти
Уменьшение размера локального блока памяти
Освобождение локального блока памяти

Приложение LMEM

Инициализация локальной области данных в заданном сегменте
Приложение LMEM
Листинг 2.5. Файл lmem/lmem.cpp
Листинг 2.6. Файл lmem/lmem.def
Статическая память
Автоматическая память
Дополнительная память в структуре класса окна
Дополнительная память в структуре окна
Ресурсы приложения

Функция malloc и farmalloc
Работа с локальной таблицей дескрипторов
Работа с большими массивами данных
Утилита HEAPWALK
Модели памяти
Библиотеки динамической компоновки

Статическая и динамическая компоновка
DLL-библиотеки в операционной системе Windows
Структура DLL-библиотеки
Функция LibEntry
Функция LibMain

Функция WEP
Экспортируемые функции
Импортирование функций
Библиотека импорта
Использование оператора IMPORTS
Динамический импорт функций во время выполнения приложения
Файл определения модуля для DLL-библиотеки

Анализ DLL-библиотек при помощи утилиты tdump.exe
Приложение DLLCALL
Листинг 3.1. Файл dllcall/dllsrc.cpp
Листинг 3.2. Файл dllcall/dll.def
Листинг 3.3. Файл dllcall/dllcall.cpp
Листинг 3.4. Файл dllcall/dllcall.def
Приложение DISCARD

Листинг 3.5. Файл discard/discard.cpp
Листинг 3.6. Файл discard/discard.def
Листинг 3.7. Файл discard/dll.c
Листинг 3.8. Файл discard/dll.def
Фильтры
Установка фильтра

Отмена фильтра
Функции фильтра
Фильтр WH_CALLWNDPROC
Фильтр WH_CBT
Фильтр WH_DEBUG
Фильтр WH_GETMESSAGE
Фильтр WH_HARDWARE
Фильтр WH_JOURNALRECORD
Фильтр WH_JOURNALPLAYBACK
Фильтр WH_KEYBOARD

Фильтр WH_MOUSE
Фильтр WH_MSGFILTER
Фильтр WH_SYSMSGFILTER
Фильтр WH_SHELL
Приложение WINHOOK
Листинг 3.9. Файл winhook/winhook.cpp

Листинг 3.10. Файл winhook/winhook.hpp
Листинг 3.11. Файл winhook/winhook.def
Листинг 3.12. Файл winhook/kbhook.cpp
Листинг 3.13. Файл winhook/kbhook.rc

Листинг 3.14. Файл winhook/kbhook.def
Работа с файлами
Особенности работы с файлами в мультизадачной среде
Файлы и обработка сообщений
Временные файлы
Кодировка OEM
Функции Windows для работы с файлами
Открытие файлов

Стандартные диалоговые панели для открытия файлов
LStructSize
Flags
HwndOwner
HInstance
LpstrFilter
LpstrCustomFilter
NMaxCustFilter
NFilterIndex

LpstrFile
NMaxFile
LpstrFileTitle
NMaxFileTitle
LpstrInitialDir
LpstrTitle
NFileOffset
NFileExtension
LpstrDefExt
LCustData

LpfhHook
LpTemplatename
Закрытие файлов
Создание файлов
Чтение и запись
Позиционирование
Определение типа устройства ввода/вывода
Использование стандартной библиотеки транслятора
Проверка присутствия share.exe
Листинг 4.1. Файл isshare/isshare.cpp

Листинг 4.2. Файл isshare/isshare.def
Новый вариант приложения OEM3ANSI
Листинг 4.3. Файл oem3ansi/oem3ansi.cpp
Листинг 4.4. Файл oem3ansi/oem3ansi.rc

Листинг 4.5. Файл oem3ansi/oem3ansi.def
Приложение 1. Коды ошибок в Windows
Литература