Страница 13 из 40 BOOL ResetEvent(); Возвращаемое значение Ненулевое, если функция нормально завершила свою работу, и нулевое в противном случае. Описание Данная функция переводит объект события в неотмеченное состояние, отмечаемое функцией SetEvent. Неотмеченное состояние события заставляет ждать все потоки, которые хотели бы получить доступ к ресурсу, контролируемому данным объектом события. Эта функция не используется для автоматических объектов событий. BOOL SetEvent(); Возвращаемое значение Ненулевое, если функция нормально завершила свою работу, и нулевое в противном случае. Описание Данная функция переводит объект события в отмеченное состояние, освобождая все ждущие данного события потоки. Если объект события не является автоматическим, для перевода его в неотмеченное состояние используется функция ResetEvent. В противном случае этот объект будет отмечен до тех пор, пока не будет освобожден любой поток. Класс CFile является базовым классом библиотеки MFC для работы с файлами. Он обеспечивает небуферированный двоичный доступ к файлу. Производные от него классы поддерживают текстовые файлы и файлы, расположенные в оперативной памяти. Класс CFile используется совместно с классом CArchive для сохранения объектов классов из библиотеки MFC. Использование класса CFile в качестве базового класса для всех классов, работающих с файлами, позволяет использовать его интерфейс во всех этих классах. Поэтому, например, работа с файлом, расположенным в памяти, практически не отличается от работы с классом, расположенным на диске. Класс CFile и производные от него классы используются для обычной работы с диском. Для записи на диск форматированного текста используется класс ofstream и другие подобные классы Microsoft. Обычно файл на диске автоматически открывается конструктором класса CFile и автоматически закрывается его деструктором. Статические функции данного класса позволяют определять статус файла не открывая его. Описание данного класса содержится в файле заголовка afx.h. CFile(); CFile(int hFile); CFile(LPCTSTR lpszFileName, UINT nOpenFlags); throw(CFileException); Аргументы "sectiontableheader"hFile - дескриптор уже открытого файла. "sectiontableheader"lpszFileName - строка, содержащая путь к открываемому файлу. Путь может быть как относительным, так и абсолютным. "sectiontableheader"nOpenFlags - флаги доступа к файлу. Определяют действия, которые необходимо предпринять при открытии файла. Приведенные ниже флаги могут объединяться оператором побитового ИЛИ (|). Необходимо указать как минимум один флаг доступа и один флаг разделения ресурсов. Флаги modeCreate и modeNoInherit являются не обязательными. В данном аргументе могут быть указаны следующие флаги: "sectiontableheader"CFile::modeCreate - создается новый файл. Если файл с данным именем уже существовал, то у него устанавливается нулевая длина; "sectiontableheader"CFile::modeNoTruncate - если файл с данным именем уже существовал, то у него сохраняется прежняя длина. Этот флаг устанавливается совместно с флагом modeCreate. Это позволяет открывать и использовать один и тот же конструктор для создания новых файлов и открытия уже существующих. Этот флаг используется при создании объектов класса CstdioFile; "sectiontableheader"CFile::modeRead - открывает файл только для чтения; "sectiontableheader"CFile::modeReadWrite - открывает файл как для чтения, так и для записи; "sectiontableheader"CFile::modeWrite - открывает файл только для записи; "sectiontableheader"CFile::modeNoInherit - запрещает дочернему процессу использовать данный файл; "sectiontableheader"CFile::shareDenyNone - позволяет другому процессу читать и записывать информацию в данный файл. При открытии данного файла возникает ошибка, если он был открыт в режиме совместимости каким-либо другим процессом; "sectiontableheader"CFile::shareDenyRead - не позволяет другому процессу читать информацию из данного файла. При открытии данного файла возникает ошибка, если он был открыт в режиме совместимости или для чтения каким-либо другим процессом; "sectiontableheader"CFile::shareDenyWrite - не позволяет другому процессу записывать информацию в данный файл. При открытии данного файла возникает ошибка, если он был открыт в режиме совместимости или для записи каким-либо другим процессом; "sectiontableheader"CFile::shareExclusive - открывает данный файл в режиме безраздельного пользования, запрещая любому другому процессу читать или записывать информацию в данный файл. При открытии данного файла возникает ошибка, если он был открыт в режиме чтения или записи каким-либо другим процессом, или, даже, тем же самым процессом; "sectiontableheader"CFile::shareCompat - этот флаг отсутствует в 32-разрядной библиотеке MFC. Он соответствует флагу CFile::shareExclusive в функции CFile::Open; "sectiontableheader"CFile::typeText - устанавливает текстовый режим обработки файла, в котором предусмотрены специальные процедуры обработки пар символов возврат каретки/перевод строки (используется только в производных классах); "sectiontableheader"CFile::typeBinary - устанавливает двоичный режим обработки файла (используется только в производных классах). Описание Используемый по умолчанию конструктор данного класса (не имеющий аргументов) не открывает файл, а присваивает величине m_hFile значение CFile::hFileNull. Поскольку данный класс не вызывает исключения, нет никакого смысла помещать его в структуры TRY/CATCH. Вместо этого следует использовать функцию Open, непосредственно проверяющую условия возникновения исключений. Вторая версия конструктора данного класса создает объект класса CFile, соответствующий существующему файлу, открытому операционной системой и идентифицируемому дескриптором файла hFile. При этом не осуществляется никаких проверок режима доступа к файлу и его типа. При уничтожении объекта класса CFile, созданного подобным конструктором файл операционной системы не закрывается. Пользователь может уничтожить его самостоятельно. Третья версия конструктора данного класса создает объект класса CFile и открывает файл операционной системы, путь, к которому указан в аргументе lpszFileName. Этот конструктор можно рассматривать как объединение первой версии конструктора с функцией Open. В случае возникновения ошибок при открытии файла данный конструктор вызывает исключения. В большинстве случаев это означает возникновение фатальной ошибки, о которой должно быть сообщено пользователю. virtual void Close(); throw(CFileException); Описание Закрывает файл, связанный с объектом данного класса, и делает его недоступным для операций чтения и записи. Если файл не был закрыт до уничтожения объекта данного класса, эта операция производится его деструктором. Если объект класса CFile создавался в куче с использованием оператора new, его необходимо уничтожить после закрытия файла. Функция Close присваивает переменной m_hFile значение CFile::hFileNull. virtual CString GetFilePath() const; Возвращаемое значение Полный путь к файлу, связанному с данным объектом класса. Описание Данная функция позволяет получить полный путь к файлу, связанному с данным объектом класса. Например, для файла c:\windows\write\myfile.wri функция GetFilePath возвратит строку "c:\windows\write\myfile.wri". Чтобы возвратить имя файла с расширением (myfile.wri) используйте функцию GetFileName. Чтобы возвратить только имя файла без расширения (myfile) используйте функцию GetFileTitle. virtual DWORD GetLength() const; throw(CFileException); Возвращаемое значение Длина файла в байтах. Описание Позволяет получить текущую логическую длину файла в байтах. virtual UINT Read(void* lpBuf, UINT nCount); throw(CFileException); Возвращаемое значение Количество байт, записанных в буфер. Для всех классов, производных от класса CFile возвращаемое значение может быть меньше, чем значение аргумента nCount, если достигнут конец файла. Аргументы "sectiontableheader"lpBuf - указатель на созданный пользователем буфер, в который будут записаны данные из файла. "sectiontableheader"nCount - количество байт, которые нужно считать из файла. Для текстовых файлов пара управляющих символов возврат каретки/перевод строки считается за один символ. Описание Читает данные из файла, связанного с объектом класса CFile, в буфер. |