Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Func.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.58 Mб
Скачать

CFile::Write

virtual void Write( const void* lpBuf, UINT nCount ); throw( CFileException );

Аргументы

  1. lpBuf — указатель на созданный пользователем буфер, содержащий данные, которые будут записаны в файл.

  2. nCount — количество байт, которые нужно записать в файл. Для текстовых файлов пара управляющих символов возврат каретки/перевод строки считается за один символ.

Примечание

Записывает данные из буфера в файл, связанный с объектом класса CFile. В некоторых случаях, включая переполнение диска, функция Write вызывает исключение.

Пример

extern CFile cfile;

char pbuf[100];

cfile.Write( pbuf, 100 );

CFrameWnd

Класс CFrameWnd обеспечивает основные функциональные возможности перекрывающихся и всплывающих окон однооконного приложения Windows (SDI), а также функции для работы с элементами управления окна.

Чтобы создать рабочее окно приложения, необходимо создать класс окна, производный от класса из CFrameWnd, и добавить в него переменные для хранения данных, специфичных для создаваемого приложения. Создать карту сообщений и функции для обработки сообщений, поступающих в данное окно.

Имеются три способа создать окно:

  • Непосредственно создать его функцией Create.

  • Непосредственно создать его функцией LoadFrame.

  • Создать его с использованием шаблона документа.

Прежде, чем использовать функции Create или LoadFrame для непосредственного создания окна, необходимо создать в стеке объект класса CFrameWnd с использованием стандартного оператора C++ new. Перед вызовом функции Create данный класс можно зарегистрировать глобальной функцией AfxRegisterWndClass, сопоставляющей данному окну значок и устанавливающей стили окна.

Функция Create позволяет непосредственно задавать параметры создания окна, а функция LoadFrame позволяет упростить этот процесс за счёт использования меньшего числа аргументов и установки большинства параметров окна по умолчанию, используя информацию, содержащуюся в соответствующих ресурсах, включая заголовок окна, значок, таблицу акселераторов и меню. Для того чтобы содержащаяся в них информация могла быть использована в функции LoadFrame, все эти ресурсы должны иметь один и тот же идентификатор ресурса (например, IDR_MAINFRAME).

Связанные с объектом класса CFrameWnd объекты класса представления и класса документа создаются самим приложением, а не программистом. Объект класса CDocTemplate обеспечивает одновременное создание связанных объектов классов окна, просмотра и документа. Параметры конструктора класса CDocTemplate определяют характеристики объектов класса CRuntimeClass создаваемых для обращения к трём связанным классам (документа, окна и представления). Классы, производные от CRuntimeClass позволяют приложению создавать свои объекты в процессе выполнения приложения (например, при обработке команды меню File, New или команды меню многооконного приложения Window, New Window).

При создании класса окна, производного от класса CFrameWnd, должен использоваться макрос DECLARE_DYNCREATE, обеспечивающий правильную работу описанного выше механизма RUNTIME_CLASS.

Объект класса CFrameWnd содержит заданные по умолчанию реализации следующих функций основного окна типичного приложения Windows:

  • Он следит за объектом класса просмотра, соответствующего неактивному окну Windows или не имеющего на данный момент фокуса ввода. При активизации данного окна объект класса CFrameWnd вызывает функцию CView::OnActivateView.

  • Он транслирует в активный объект класса представления основные сообщения, включая сообщения, обрабатываемые функциями OnSetFocus, OnHScroll и OnVScroll класса CWnd.

  • Активный объект класса представления (или активное окно многооконного приложения) может установить текущий заголовок окна. Эта возможность может быть заблокирована, сбросом бита FWS_ADDTOTITLE в стиле окна.

  • Объект класса CFrameWnd управляет позиционированием элементов управления, областей просмотра и других дочерних окон внутри рабочей области окна. Объект данного класса осуществляет, также, обновление состояния кнопок панели инструментов и других элементов управления в окне при отсутствии других исполняемых задач. Кроме того, объект класса Объект класса CFrameWnd содержит стандартные процедуры отображения и исключения с экрана панелей инструментов и строки состояния.

  • Объект данного класса управляет отображением главного меню приложения. При раскрытии подменю объект класса окна использует макрос UPDATE_COMMAND_UI, чтобы определить, использование каких пунктов меню следует разрешить, какие пункты меню следует заблокировать, а какие из них нужно отметить. Когда пользователь выбирает команду меню, окно изменяет состояние элементов управления в соответствии с выбранной командой.

  • Объект класса CFrameWnd использует таблицу акселераторов для преобразования нажатий пользователем определённых комбинаций клавиш в конкретные действия.

  • Объект класса CFrameWnd может содержать набор идентификаторов, используемых функцией LoadFrame для создания контекстно-зависимой справки. Объект данного класса, также, организует работу с полумодальными окнами, используемыми для отображения контекстно-зависимой справки (<Shift+F1>) и в режиме предварительного просмотра печати.

  • Объект данного класса позволяет открыть файл, перемещённый из Диспетчера файлов в данное окно. Если расширение файла зарегистрировано и связано с приложением, данный объект может ответить на запрос о динамическом обмене данными (DDE), пришедший из Диспетчера файлов при открытии пользователем соответствующего файла или при вызове функции Windows ShellExecute.

  • Если объект данного класса соответствует главному окну приложения, то при закрытии пользователем данного окна ему выдаётся запрос о необходимости сохранить все изменения, внесённые им в документы в данном сеанса работы с приложением. Для этого вызываются функции OnClose и OnQueryEndSession.

  • Если объект данного класса соответствует главному окну приложения, то данное окно предоставляет контекст устройства при вызове справочной системы. Закрытие этого окна вызовет прекращение исполнения файла Winhelp.exe, если в данном приложении была вызвана справка.

Для уничтожения объекта класса CFrameWnd нельзя использовать оператор C++ delete. Вместо этого следует использовать функцию CWnd::DestroyWindow. Объект данного класса уничтожается при вызове функции CFrameWnd::PostNcDestroy. При закрытии окна пользователем функция OnClose вызывает функцию DestroyWindow.

Описание данного класса содержится в файле заголовка afxwin.h.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]