- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Функция WriteFile ( )
BOOL WriteFile ( HANDLE hFile, // дескриптор файла
LPCVOID lpBuffer, // данные, подлежащие выводу
DWORD NumberBytes , // число выводимых байт
LPDWORD lpBytesWritten, // число записанных байт
LPOVERLAPPED lpOverlapped ) ; // структура для
//перекрываемого
// ввода – вывода
Первый параметр hFile – дескриптор файла, который возвращен функцией
CreateFile().
Второй параметр – указатель на символьную строку, подлежащую выводу.
Третий параметр – число выводимых байт, т.е. .длина символьной строки.
Четвертый параметр – число выведенных байт.
Пятый параметр – должен быть задействован в асинхронном вводе - выводе при работе с каналами, коммуникационными устройствами и т.д.
В случае успешного выполнения функция WriteFile() возвращает значение TRUE.
Отображение файла в память
Отображение файла в память позволяет отображать память на жестком диске в адресное пространство приложения. Это означает, что байтами в файле можно манипулировать так, как если бы они находились в оперативной памяти.
Для отображения файла в память необходимо:
– создать или открыть файл функцией CreateFile(), которая возвращает дескриптор файла;
– отобразить файл в память функцией CreateFileMapping();
– закрыть файл функцией CloseHandle();
– получить указатель на другую область памяти, в которую отображен файл функцией MapViewOfFile();
– по окончании работы с файлом закрыть все используемые переменные функциями UnmapViewOfFile() и CloseHandle()
Функция CreateFileMapping().
HANDLE CreateFileMapping (
HANDLE hFile, // дескриптор отображаемого файла
LPSECURITI_ATTRIBUTES pAttr, // необязательные атрибуты безопасности
DWORD flProtect, //защита для объекта отображения
DWORD dwMaxHigh, //старшие 32 бита размера объекта
DWORD dwMaxLow, // младшие 32 бита размера объекта
LPSTR lpName); //имя объекта отображения
Первый параметр содержит дескриптор файла, который требуется отобразить в память. Этот дескриптор может быть получен функцией CreateFile().
Второй обычно равен NULL для установления набора атрибутов безопасности по умолчанию.
Третий параметр может принимать один из следующих значений:
PAGE_READONLY – передаваемая часть файла доступна только для чтения;
PAGE_READWRITE – передаваемая часть файла доступна для чтения и
записи, при этом в функции CreateFile() должны использоваться параметры: GENERIC_READ и GENERIC_WRITE.
PAGE_WRITECOPY – доступен для записи и копирования, в CreateFile()
должны использоваться:
GENERIC_READ и GENERIC_WRITE.
Если четвертый и пятый параметры равны NULL, то в них автоматически помещается значение размера отображаемого файла.
Последний шестой параметр содержит имя объекта отображения. По этому имени разные процессы могут обращаться к этому файлу, что позволяет разделять память между приложениями. Если задания имени объекта не требуется, то значение параметра NULL.
Пример:
hMap = CreateFileMapping (hFile, NULL, PAGE_READONLY, 0, 0, NULL);