Visual C++. Описание стандартных классов
Страница 13.


 
ResetEvent
BOOL ResetEvent();
Возвращаемое значение
Ненулевое, если функция нормально завершила свою работу, и нулевое в противном случае.
Описание
Данная функция переводит объект события в неотмеченное состояние, отмечаемое функцией SetEvent. Неотмеченное состояние события заставляет ждать все потоки, которые хотели бы получить доступ к ресурсу, контролируемому данным объектом события. Эта функция не используется для автоматических объектов событий.
SetEvent
BOOL SetEvent();
Возвращаемое значение
Ненулевое, если функция нормально завершила свою работу, и нулевое в противном случае.
Описание
Данная функция переводит объект события в отмеченное состояние, освобождая все ждущие данного события потоки. Если объект события не является автоматическим, для перевода его в неотмеченное состояние используется функция ResetEvent. В противном случае этот объект будет отмечен до тех пор, пока не будет освобожден любой поток.
CFile
Класс CFile является базовым классом библиотеки MFC для работы с файлами. Он обеспечивает небуферированный двоичный доступ к файлу. Производные от него классы поддерживают текстовые файлы и файлы, расположенные в оперативной памяти. Класс CFile используется совместно с классом CArchive для сохранения объектов классов из библиотеки MFC.
Использование класса CFile в качестве базового класса для всех классов, работающих с файлами, позволяет использовать его интерфейс во всех этих классах. Поэтому, например, работа с файлом, расположенным в памяти, практически не отличается от работы с классом, расположенным на диске.
Класс CFile и производные от него классы используются для обычной работы с диском. Для записи на диск форматированного текста используется класс ofstream и другие подобные классы Microsoft.
Обычно файл на диске автоматически открывается конструктором класса CFile и автоматически закрывается его деструктором. Статические функции данного класса позволяют определять статус файла не открывая его.
Описание данного класса содержится в файле заголовка afx.h.
CFile
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. В случае возникновения ошибок при открытии файла данный конструктор вызывает исключения. В большинстве случаев это означает возникновение фатальной ошибки, о которой должно быть сообщено пользователю.
Close
virtual void Close(); throw(CFileException);
Описание
Закрывает файл, связанный с объектом данного класса, и делает его недоступным для операций чтения и записи. Если файл не был закрыт до уничтожения объекта данного класса, эта операция производится его деструктором. Если объект класса CFile создавался в куче с использованием оператора new, его необходимо уничтожить после закрытия файла. Функция Close присваивает переменной m_hFile значение CFile::hFileNull.
GetFilePath
virtual CString GetFilePath() const;
Возвращаемое значение
Полный путь к файлу, связанному с данным объектом класса.
Описание
Данная функция позволяет получить полный путь к файлу, связанному с данным объектом класса. Например, для файла c:\windows\write\myfile.wri функция GetFilePath возвратит строку "c:\windows\write\myfile.wri". Чтобы возвратить имя файла с расширением (myfile.wri) используйте функцию GetFileName. Чтобы возвратить только имя файла без расширения (myfile) используйте функцию GetFileTitle.
GetLength
virtual DWORD GetLength() const; throw(CFileException);
Возвращаемое значение
Длина файла в байтах.
Описание
Позволяет получить текущую логическую длину файла в байтах.
Read
virtual UINT Read(void* lpBuf, UINT nCount); throw(CFileException);
Возвращаемое значение
Количество байт, записанных в буфер. Для всех классов, производных от класса CFile возвращаемое значение может быть меньше, чем значение аргумента nCount, если достигнут конец файла.
Аргументы
"sectiontableheader"lpBuf - указатель на созданный пользователем буфер, в который будут записаны данные из файла.
"sectiontableheader"nCount - количество байт, которые нужно считать из файла. Для текстовых файлов пара управляющих символов возврат каретки/перевод строки считается за один символ.
Описание
Читает данные из файла, связанного с объектом класса CFile, в буфер.
 
« Предыдущая статья   Следующая статья »