Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
q TC_UA_ABLE — устройство позволяет использовать подчеркивание текста. Если этот бит не установлен, GDI создает операцию подчеркивания для шрифта устройства.
q TC_SO_ABLE — устройство позволяет использовать зачеркивание текста. Если этот бит не установлен, GDI создает операцию зачеркивания для шрифта устройства.
q TC_RA_ABLE — устройство позволяет использовать растровые шрифты. Это означает, что GDI должен пронумеровать все растровые шрифты или шрифты TrueType, имеющиеся в устройстве. Для этого вызывается функция Windows EnumFonts или EnumFontFamilies. Если этот бит не установлен, то при вызове данных функций растровые шрифты или шрифты TrueType не нумеруются.
q TC_VA_ABLE — устройство позволяет использовать векторные шрифты. Это означает, что GDI должен пронумеровать все имеющиеся в устройстве векторные шрифты. Для этого вызывается функция Windows EnumFonts или EnumFontFamilies. Это имеет значение только для векторных устройств (например, плоттеров). Драйверы дисплея (который должен использовать растровые шрифты) и растровых принтеров всегда нумеруют векторные шрифты, поскольку GDI растеризует векторные шрифты перед их передачей драйверу.
q TC_RESERVED — зарезервировано и должно иметь нулевое значение.
Описание
Позволяет получить разнообразные сведения об устройствах отображения информации.
GetSafeHdc
HDC GetSafeHdc() const;
Возвращаемое значение
Дескриптор контекста устройства.
Описание
Данная функция позволяет получить контекст устройств вывода m_hDC. Эта функция может работать с нулевыми указателями.
GetTextExtent
CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
CSize GetTextExtent(const CString& str) const;
Возвращаемое значение
Размер строки (в логических единицах) записанный в объект класса CSize.
Аргументы
q lpszString — указатель на символьную строку. В качестве данного аргумента может также выступать объект класса CString.
q nCount — определяет количество символов в строке.
q str — объект класса CString содержащий измеряемую строку.
Описание
Данная функция позволяет определить ширину и высоту строки символов при выводе ее установленным в настоящее время шрифтом. Информация извлекается из переменной m_hAttribDC данного контекста устройства. Установки текущей области отсечки не влияют на возвращаемые функцией GetTextExtent значения.
Поскольку некоторые устройства не помещают символы строки в последовательный массив ячеек (уменьшают апрош в характерных сочетаниях пар знаков) сумма размеров отдельных символов в строке может не совпадать с размером всей строки.
IsPrinting
BOOL IsPrinting() const;
Возвращаемое значение
Ненулевое, если данный объект класса CDC является объектом класса контекста устройства принтера, и нулевое в противном случае.
Описание
Данная функция позволяет определить, для чего будет использоваться контекст устройства.
Rectangle
BOOL Rectangle(int x1, int y1, int x2, int y2);
BOOL Rectangle(LPCRECT lpRect);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q x1 — определяет горизонтальную координату левого верхнего угла прямоугольника (в логических единицах).
q y1 — определяет вертикальную координату левого верхнего угла прямоугольника (в логических единицах).
q x2 — определяет горизонтальную координату правого нижнего угла прямоугольника (в логических единицах).
q y2 — определяет вертикальную координату правого нижнего угла прямоугольника (в логических единицах).
q lpRect — определяет прямоугольник в логических единицах. В качестве данного аргумента может выступать как объект класса CRect, так и указатель на объект структуры RECT.
Описание
Рисует прямоугольник, используя текущее перо. Внутренняя поверхность прямоугольника заполняется текущей кистью.
Прямоугольник доходит до, но не включает свои правые и нижние координаты. Это означает, что высота прямоугольника составляет y2 — y1, а его ширина составляет x2 — x1. Как высота, так и ширина прямоугольника должны составлять больше 2 и меньшелогических единиц.
SelectClipRgn
virtual int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(CRgn* pRgn, int nMode);
Возвращаемое значение
Тип области. Может принимать одно из следующих значений:
r COMPLEXREGION — новая область отсечки имеет перекрывающиеся границы;
r ERROR — используется недопустимый контекст устройства или недопустимая область;
r NULLREGION — создана пустая область отсечки;
r SIMPLEREGION — новая область отсечки не имеет перекрывающихся границ.
Аргументы
q pRgn — указатель на выбранную область.
· В первой версии функции SelectClipRgn нулевое значение данного аргумента означает, что выбирается вся рабочая область окна, а область отсечки совпадает с границами окна.
· Во второй версии функции SelectClipRgn данный аргумент может принимать нулевое значение только в режиме RGN_COPY.
q nMode — определяет выполняемую операцию. Может принимать одно из следующих значений:
· RGN_AND — новая область отсечки представляет собой пересечение текущей области отсечки и области, определенной в аргументе pRgn;
· RGN_COPY — новая область отсечки полностью совпадает с областью, заданной в аргументе pRgn. В этом случае данная функция идентична своей первой версии, однако, если аргумент pRgn в данной версии равен нулю, то в качестве новой области отсечки принимается область отсечки по умолчанию (нулевая область);
· RGN_DIFF — новая область отсечки представляет собой текущую область отсечки, из которой исключены области, перекрывающиеся с областью, заданной в аргументе pRgn;
· RGN_OR — новая область отсечки представляет собой объединение текущей области отсечки и области, заданной в аргументе pRgn;
· RGN_XOR — новая область отсечки представляет собой объединение текущей области отсечки и области, заданной в аргументе pRgn, за исключением областей их пересечения.
Описание
Выбирает указанную область как новую область отсечки для данного контекста устройства. Используется копия указанной области. Сама область может использоваться в неограниченном количестве объектов класса контекста устройств или может быть удалена.
Функция предполагает, что координаты указанной области заданы в единицах устройства. Некоторые принтеры поддерживают в текстовом режиме более высокое разрешение, чем в графическом, для поддержания разрешения, необходимого для задания параметров шрифтов. В этих устройствах при запросе его разрешения сообщаются величины, используемые в режиме высокого разрешения, то есть в текстовом режиме. После этого в данных устройствах производится перерасчет координат графических объектов таким образом, чтобы несколько точек, заданных с высоким разрешением, отображались в одной точке, выводимой с графическим разрешением. При использовании режима вывода текста необходимо всегда вызывать функцию SelectClipRgn.
Приложения, использующие масштабирование графических объектов при выводе их с использованием функций GDI должны использовать функцию GETSCALINGFACTOR, позволяющую определить параметры масштабирования данного принтера. Использование неправильного параметра масштабирования может привести к обрезанию выводимой информации. При использовании области для задания области отсечки графических объектов GDI делит полученные координаты на величину параметра масштабирования. При использовании области для задания области отсечки текста, такого преобразования координат не производится. Параметр масштабирования равный 1 приводит к делению координат на 2, а параметр масштабирования равный 2 приводит к делению координат на 4, и так далее.
SelectObject
CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
Возвращаемое значение
Указатель на замещаемый объект одного из классов, производных от класса CGdiObject, например на объект класса CPen. Тип возвращаемого значения зависит от версии используемой функции. В случае возникновения ошибки возвращается нулевое значение. Эта функция может возвращать указатель на временный объект. Это означает, что указатель на данный объект можно использовать только в пределах функции обработки одного сообщения Windows. Более подробная информация содержится в описании функции CGdiObject::FromHandle.
Версия функции, аргументом которой является указатель на объект класса CRgn, выполняет ту же функцию, что и функция SelectClipRgn. Ее возвращаемая величина может принимать следующие значения:
r COMPLEXREGION — новая область отсечки имеет пересекающиеся границы;
r ERROR — ошибка при задании контекста устройства или недопустимая область отсечки;
r NULLREGION — новая область отсечки представляет собой пустую область;
r SIMPLEREGION — новая область отсечки не имеет пересекающихся границ.
Аргументы
q pPen — указатель на объект класса CPen.
q pBrush — указатель на объект класса CBrush.
q pFont — указатель на объект класса CFont.
q pBitmap — указатель на объект класса CBitmap.
q pRgn — указатель на объект класса CRgn.
Описание
Выбирает объект класса в контекст устройства. Класс CDC содержит пять версий данной функции, отличающихся типом аргумента и возвращаемого значения. В качестве аргументов данной функции могут выступать объекты классов пера, кисти, шрифта, битового образа и области. Выбранный в контекст объект замещает соответствующий объект в контексте устройства. Например, если аргумент pObject обобщенной версии данной функции указывает на объект класса CPen, то данная функция замещает в данном контексте устройства текущее перо на перо, указанной в аргументе pObject.
Приложение может выбирать битовый образ только в контекст устройства памяти и этот битовый образ не может быть выбран одновременно в два и более контекстов устройства памяти. Формат битового образа должен быть монохромным или совместимым с контекстом данного устройства. В противном случае функция SelectObject возвращает ошибку.
В версии Windows 3.1 и более поздних версиях функция SelectObject возвращает ту же самую величину независимо от того, используется ли она в метафайлах или нет. В предыдущих версиях данная функция при вызове ее в метафайлах возвращала ненулевое значение в случае своего успешного завершения, и нулевое значение в противном случае.
SetMapMode
virtual int SetMapMode(int nMapMode);
Возвращаемое значение
Предыдущий режим отображения.
Аргументы
q nMapMode — определяет новый режим отображения. Может принимать одно из следующих значений:
· MM_ANISOTROPIC — логические единицы преобразуются в произвольные единицы с произвольным направлением осей координат. Установка режима отображения MM_ANISOTROPIC не изменяет установок в текущем окне и в текущей рабочей области окна. Для изменения единиц измерения, ориентации и масштаба вызываются функции SetWindowExt и SetViewportExt;
· MM_HIENGLISH — каждая логическая единица преобразуется в 0.001 дюйма. Рост величин по горизонтальной оси приводит к перемещению вправо, а рост величин по вертикальной оси приводит к перемещению вверх;
· MM_HIMETRIC — каждая логическая единица преобразуется в 0.01 миллиметра. Рост величин по горизонтальной оси приводит к перемещению вправо, а рост величин по вертикальной оси приводит к перемещению вверх;
· MM_ISOTROPIC — логические единицы преобразуются в произвольные единицы с произвольным направлением осей координат, но с одинаковым масштабом по осям. Для изменения единиц измерения, ориентации и масштаба вызываются функции SetWindowExt и SetViewportExt. Для обеспечения одинакового масштаба отображения по осям GDI производит необходимые настройки;
· MM_LOENGLISH — каждая логическая единица преобразуется в 0.01 дюйма. Рост величин по горизонтальной оси приводит к перемещению вправо, а рост величин по вертикальной оси приводит к перемещению вверх;
· MM_LOMETRIC — каждая логическая единица преобразуется в 0.1 миллиметра. Рост величин по горизонтальной оси приводит к перемещению вправо, а рост величин по вертикальной оси приводит к перемещению вверх;
· MM_TEXT — каждая логическая единица преобразуется в 1 элемент изображения. Рост величин по горизонтальной оси приводит к перемещению вправо, а рост величин по вертикальной оси приводит к перемещению вниз;
· MM_TWIPS — каждая логическая единица преобразуется в 1/20 пики (поскольку пика составляет 1/72 дюйма, то данная величина составляет 1/1440 дюйма). Рост величин по горизонтальной оси приводит к перемещению вправо, а рост величин по вертикальной оси приводит к перемещению вверх.
Описание
Устанавливает режим отображения. Режим отображения определяет единицы измерения, используемые при преобразовании логических единиц в единицы устройства. Кроме того, режим отображения определяет направление осей координат. Режим отображения MM_TEXT позволяет приложению непосредственно работать с элементами изображения устройства. В этом случае одна логическая единица соответствует одному элементу изображения устройства. Физический размер элементов изображения зависит от конкретного устройства.
Режимы отображения MM_HIENGLISH, MM_HIMETRIC, MM_LOENGLISH, MM_LOMETRIC и MM_TWIPS используются при выводе изображений, размеры которых не зависят от устройства, на котором они выводятся. Режим отображения MM_ISOTROPIC обеспечивает соотношение масштабов горизонтальной и вертикальной оси, равное 1:1. В режиме отображения MM_ANISOTROPIC горизонтальная и вертикальная оси имеют независимый масштаб.
SetViewportOrg
virtual CPoint SetViewportOrg(int x, int y);
virtual CPoint SetViewportOrg(POINT point);
Возвращаемое значение
Предыдущее значение начала отсчета рабочей области (в координатах устройства) как объект класса CPoint.
Аргументы
q x — определяет горизонтальную координату начала отсчета рабочей области, выраженную в координатах устройства. Значение данного аргумента должно лежать в пределах системы координат устройства.
q y — определяет вертикальную координату начала отсчета рабочей области, выраженную в координатах устройства. Значение данного аргумента должно лежать в пределах системы координат устройства.
q point — определяет координаты начала отсчета рабочей области. Значение данного аргумента должно лежать в пределах системы координат устройства. В качестве данного аргумента может выступать как объект структуры POINT, так и объект класса CPoint.
Описание
Устанавливает начало отсчета рабочей области контекста устройства. Рабочая область, наряду с окном контекста устройства, определяет то, каким образом GDI преобразует координаты, указанные в логической системе координат, в систему координат физического устройства. Другими словами, как GDI преобразует логические координаты в координаты устройства.
Начало отсчета рабочей области определяет точку, заданную в системе координат устройства, в которую GDI помещает начало координат окна, под которым понимается точка, заданная в логической системе координат, определяемая функцией SetWindowOrg. GDI преобразует все остальные точки изображения, следуя той же процедуре, которая использовалась для преобразования начала координат окна в начало отсчета рабочей области. Например, все точки круга, описанного вокруг точки начала координат окна преобразуются в точки круга, описанного вокруг начала отсчета рабочей области. Аналогично, все точки линии, проходящей через начало координат окна преобразуются в точки линии, проходящей через начало отсчета рабочей области.
StartDoc
int StartDoc(LPDOCINFO lpDocInfo);
Возвращаемое значение
Положительная величина, в случае успешного завершения функции, в случае возникновения ошибки, такой как недостаток памяти или неправильно указанный порт, возвращается значение –1.
Аргументы
q lpDocInfo — указатель на объект структуры DOCINFO, содержащей имя файла документа и имя выходного файла.
Описание
Информирует драйвер устройства о начале нового сеанса печати и о том, что все последующие вызовы функций StartPage и EndPage будут относиться к этому сеансу печати, пока не будет вызвана функция EndDoc. Это гарантирует, что при печати многостраничного документа процесс печати не будет прерываться другими сеансами.
В Windows версии 3.1 и последующих версиях данная функция заменяет управляющую последовательность STARTDOC, посылаемую принтеру.
Функция StartDoc не должна использоваться в метафайлах.
StartPage
int StartPage();
Описание
Данная функция вызывается для подготовки принтера к приему данных. Функция StartPage служит для замены управляющих последовательностей NEWFRAME и BANDINFO, посылаемых принтеру. Система делает недоступным вызов функции ResetDC между вызовами функций StartPage и EndPage.
TextOut
virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
BOOL TextOut(int x, int y, const CString& st);
Возвращаемое значение
Ненулевое, если функция успешно завершает свою работу, и нулевое в противном случае.
Аргументы
q x — определяет горизонтальную координату исходной точки текста.
q y — определяет вертикальную координату исходной точки текста.
q lpszString — указатель на выводимую текстовую строку.
q nCount — размер выводимой строки в байтах.
q str — объект класса CString, содержащий выводимый текст.
Описание
Данная функция выводит текстовую строку в заданной позиции с использованием текущего шрифта.
Под координатами текста понимается левый верхний угол ячейки текста. По умолчанию текущая позиция не используется или обновляется данной функцией.
Если приложению необходимо обновить свою текущую позицию при вызове функции TextOut, оно должно предварительно вызвать функцию SetTextAlign, установив в ее аргументе nFlags флаг TA_UPDATECP. После установки данного флага Windows игнорирует значения аргументов x и y при последующих вызовах функции TextOut и производит вывод текста в текущей позиции.
CDialog
Класс CDialog является родительским классом для пользовательских классов, используемый для отображения диалоговых окон на экране. Диалоговые окна могут быть модальными и немодальный. Модальное диалоговое окно должно быть закрыто пользователем прежде, чем приложение сможет продолжить свою работу. Немодальное диалоговое окно допускает работу пользователя с приложением до своего закрытия и удаления с экрана.
Диалоговый объект является комбинацией шаблона диалога и одного из пользовательских классов, производных от класса CDialog. Для создания шаблона диалога и сохранения его в файле ресурсов обычно используется редактор диалога. Запуск мастера ClassWizard из окна редактора диалога позволяет создать соответствующий данному диалоговому окну класс, производный от класса CDialog.
Диалоговое окно, подобно любому другому окну, получает сообщения от Windows. Основным назначением объекта пользовательского класса диалога является обработка сообщений, поступающих от объектов классов элементов управления данного диалогового окна, при взаимодействии пользователя с соответствующими элементами управления. Мастер ClassWizard просматривает потенциальные сообщения, которые может послать каждый элемент управления данного диалогового окна, и предоставляет пользователю возможность выбора тех сообщений, которые он действительно собирается обрабатывать. После выбора пользователем обрабатываемых сообщений, мастер ClassWizard добавляет соответствующие макросы в карту сообщения и создает заготовки функций обработки для данных сообщений в пользовательском классе диалогового окна.
Все классы диалоговых окон, кроме самых простейших, содержат переменные для хранения информации, необходимой для работы с элементами управления диалогового окна. Мастер ClassWizard просматривает все классы элементов управления созданного пользователем диалогового окна и определяет, какие переменные могут понадобиться для работы с ними. Пользователь сам выбирает тип переменной и допустимый диапазон значений для каждой из создаваемых мастером переменных. После этого мастер ClassWizard добавляет описание соответствующих переменных в пользовательский класс диалога.
После закрытия своего диалогового окна мастер ClassWizard составляет карту данных, позволяющую осуществлять автоматический обмен данными между переменными объекта класса диалогового окна и объектами классов элементов управления данного окна. Карта данных содержит функции, инициализирующие элементы управления диалогового окна соответствующими значениями, получающие информацию, содержащуюся в этих объектах, и проверяющие правильность передаваемой информации.
Чтобы создавать модальное диалоговое окно, необходимо создать объект на стеке, используя конструктор пользовательского диалогового класса, присвоить его переменным исходные значения, а затем вызвать функцию DoModal, создающую окно диалога и его элементы управления. Чтобы создать немодальный диалог, вызовите в конструкторе вашего диалогового класса функцию Create.
Одним из способов создания диалогового окна является создание в памяти объекта структуры DLGTEMPLATE. Для этого, после создания указателя на объект класса CDialog вызовите функцию CreateIndirect для создания немодального диалогового окна, или вызовите функции InitModalIndirect и DoModal для создания модального диалогового окна.
Мастер ClassWizard помещает функции обмена и проверки правильности информации в функцию CWnd::DoDataExchange, которую он же и включает в класс пользовательского диалогового окна. Вызов данной функции обычно осуществляется в функции CWnd::UpdateData.
Приложение вызывает функцию UpdateData, когда пользователь нажимает кнопку OK, чтобы закрыть модальное диалоговое окно. (Данные не обновляются при нажатии кнопки Cancel (Отмена)).
Заданная по умолчанию реализация функции OnInitDialog вызывает функцию UpdateData, чтобы установить начальные значения переменных в объектах классов элементов управления. Обычно пользователь перегружает функцию OnInitDialog для проведения нестандартных операций по инициализации объектов классов элементов управления. Функция OnInitDialog вызывается после создания всех объектов классов элементов управления в диалоговом окне и непосредственно перед отображением диалогового окна на экране.
Пользователь может вызывать функцию CWnd::UpdateData в любой функции класса модального или немодального диалогового окна.
Для установки цвета фона диалогового окна в приложении используется функция CWinApp::SetDialogBkColor.
Модальное диалоговое окно закрывается автоматически, когда пользователь нажимает кнопки OK или Cancel (Отмена) или когда программа непосредственно вызывает функцию EndDialog.
При создании класса немодального диалогового окна необходимо всегда перегружать функцию OnCancel и вызывать в ней функцию DestroyWindow. При этом не следует вызывать функцию базового класса CDialog::OnCancel, поскольку она вызывает функцию EndDialog, которая сделает данное диалоговое окно невидимым, но не уничтожит его класс. Кроме того, при создании классов немодальных диалоговых окон необходимо перегрузить функцию PostNcDestroy, добавив в него оператор delete this, поскольку немодальные диалоговые окна обычно создаются оператором new. Объекты классов модальных диалоговых окон обычно являются локальными объектами функций и не нуждаются в самоликвидации в перегруженной функции PostNcDestroy.
Описание данного класса содержится в файле заголовка afxwin. h.
DoModal
virtual int DoModal();
Возвращаемое значение
Целочисленное значение, соответствующее значению аргумента nResult функции CDialog::EndDialog, которая использовалась для закрытия данного диалогового окна. Возвращаемое значение может быть -1, если функции не удалось создать данное диалоговое окно, или IDABORT, если при его создании возникла какая-либо другая ошибка.
Описание
Функция DoModal используется для отображения модального диалогового окна и возвращения результатов после его закрытия. Данная функция поддерживает интерфейс с пользователем при отображении диалогового окна. Она делает открытое ею диалоговое окно модальным, то есть перехватывает все обращения пользователя к приложению и реагирует только на обращения к элементам управления данного диалогового окна. Все остальные обращения пользователя игнорируются, кроме немаскируемого прерывания.
Если пользователь нажимает в диалоговом окне кнопку OK или кнопку Cancel (Отмена), то вызываются соответствующие им функции обработки сообщений OnOK или OnCancel, закрывающие данное диалоговое окно. По умолчанию функция OnOK обновляет содержимое переменных в объекте класса диалогового окна, проверяет их правильность и закрывает диалоговое окно, возвращая величину IDOK, а функция OnCancel закрывает диалоговое окно без обновления значений переменных в данном объекте и возвращает величину IDCANCEL. Пользователь может перегружать эти функции.
В настоящее время в стандартный процесс создания модального диалогового окна включена функция PreTranslateMessage.
CDocTemplate
CDocTemplate представляет собой абстрактный класс, определяет базисные функциональные возможности шаблонов документа. В функции CWinApp::InitInstance обычно создается один или несколько шаблонов документа, определяющих взаимодействие трех типов классов:
r класса документа, являющегося потомком класса Cdocument;
r класса представления, отображающего данные, хранящиеся в связанном с ним классе документа. Этот класс может быть потомком класса CView, CScrollView, CFormView или CEditView (класс CEditView может непосредственно использоваться в шаблонах документов);
r класса окна, связанного с классом представления. Для однооконного приложения (SDI) базовым классом является класс CFrameWnd. Для многооконного приложения (MDI) базовым классом является класс CMDIChildWnd. Если приложение не использует нестандартные методы работы с окном, то в шаблоне документа может непосредственно использоваться класс CFrameWnd или CMDIChildWnd. В противном случае пользователю придется создать и использовать собственный класс, производный от одного из вышеперечисленных классов.
Приложение должно создавать по одному шаблону документа для каждого используемого в нем типа документа. Например, если приложение использует электронные таблицы и текстовые документы, оно должно иметь два объекта класса шаблона документа. Каждый шаблон документа ответственен за создание и управление всеми документами типа.
Шаблон документа сохраняет указатели на объекты класса CRuntimeClass, соответствующие классам документа, представления и окна. Эти объекты класса CRuntimeClass создаются при создании шаблона документа.
Шаблон документа содержит идентификаторы ресурсов, используемых совместно с данным типом документа (например, меню, значки или таблицы акселераторов). Шаблон документа также имеет строки, содержащие дополнительную информацию относительно типа документа. Они включают имя типа документа (например, "Рабочий лист") и расширение файла (например, ".xls"). Кроме того, шаблон документа может содержать другие строки, содержащие информацию, используемую интерфейсом пользователя приложения и диспетчером файлов Windows.
Если приложение является контейнером объектов OLE, шаблон документа содержит также идентификатор меню, используемого при работе с данным объектом. Если приложение является сервером объектов OLE, шаблон документа, кроме идентификатора меню, содержит идентификатор инструментальной панели. Для определения этих дополнительных ресурсов OLE используются функции SetContainerInfo и SetServerInfo.
Поскольку класс CDocTemplate является абстрактным классом, то с его объектами нельзя работать непосредственно. Типичное приложение использует один из двух производных от него классов, определенных в библиотеке MFC: CSingleDocTemplate, обеспечивающий работу однооконного приложения, и CMultiDocTemplate, обеспечивающий работу многооконного приложения.
Если создаваемое пользователем приложение требует парадигмы интерфейса пользователя, существенно отличающейся от SDI или MDI, ему необходимо создать свой собственный класс, производный от CDocTemplate.
Описание данного класса содержится в файле заголовка afxwin. h.
GetDocString
virtual BOOL GetDocString(CString& rString, enum DocStringIndex index) const;
Возвращаемое значение
Ненулевое, если найдена указанная строка, и ноль в противном случае.
Аргументы
q rString — ссылка на объект класса CString в который будет помещена искомая строка после окончания работы функции.
q index — индекс текстового поля, которое следует извлечь из строкового ресурса, связанного с данным объектом класса шаблона документа. Этот аргумент может принимать одно из следующих значений:
· CDocTemplate::windowTitle — текст, который появляется в заголовке окна приложения (например, "Microsoft Excel"). Данное поле используется только в однооконном приложении;
· CDocTemplate::docName — корневое имя для имени документа по умолчанию (например, "Sheet"). Это имя плюс порядковый номер, составляют имя нового документа данного типа при его создании в результате выбора команды меню File|New (Файл|Создать) (например, "Sheet1" или "Sheet2"). Если это поле пусто, то в качестве корневого имени используется "Untitled";
· CDocTemplate::fileNewName — имя данного типа документа. Если данное приложение использует более одного типа документа, то это имя выводится в диалоговом окне New (например, "Worksheet"). Если это имя не задано, то новый документ данного типа не может быть создан, если приложение использует несколько типов документов;
· CDocTemplate::filterName — описание типа документа и его расширения, используемого для поиска документов данного типа. Эта строка отображается в раскрывающемся списке Тип Файлов диалоговых окон Open (Открыть) и Save As (Сохранить как) (например, "Worksheets (*.xls)"). Если это текстовое поле пусто, то файлы данного типа отображаются только в режиме просмотра всех файлов директория;
· CDocTemplate::filterExt — расширение, используемое документами данного типа (например, ".xls"). Если это текстовое поле пусто, то данный тип документа не имеет расширения, подставляемого по умолчанию к его имени;
· CDocTemplate::regFileTypeId — идентификатор типа документа, сохраняемый в базе данных реестра, поддерживаемого Windows. Эта строка используется исключительно для системных целей (например, "ExcelWorksheet"). Если это текстовое поле пусто, то данный тип документа не может быть зарегистрирован в диспетчере файлов Windows;
· CDocTemplate::regFileTypeName — имя типа документа, хранимое в базе данных реестра, поддерживаемого Windows. Эта строка может отображаться в диалоговых окнах приложений, имеющих доступ к базе данных реестра (например, "Microsoft Excel Worksheet").
Описание
Данная функция вызывается для получения текстовых строк, описывающих тип документа. Строка, содержащая эти строки в виде своих полей, хранится в объекте класса шаблона документа и передается туда из строкового ресурса, хранящегося в файле ресурсов данного приложения. Приложение вызывает данную функцию, когда ему необходимо получить текстовую информацию, используемую им для организации интерфейса пользователя. Если для файлов, хранящих документы данного типа, определено особое расширение, то приложение вызывает эту функцию для включения соответствующей записи в базу данных реестра Windows, что позволяет открывать данные документы средствами диспетчера файлов Windows. Эта функция может вызываться только в классах, производных от класса CDocTemplate.
CDocument
Класс CDocument обеспечивает основные функциональные возможности создаваемого пользователем класса документа. Документ представляет собой модуль данных, используемых пользователем в своем приложении, и обычно открывается командой File|Open (Файл|Открыть) и сохраняется командой File|Save (Файл|Сохранить).
Класс CDocument содержит методы, обеспечивающие создание документа, его загрузку и сохранение. Приложение может поддерживать больше чем один тип документа. Например, оно может работать как с электронными таблицами, так и с текстовыми документами. Каждый тип документа должен быть включен в один из шаблонов документа. Шаблон документа определяет ресурсы (например, меню, значок или таблица акселератора) используемые данным типом документа. Каждый документ содержит указатель на связанный объект CDocTemplate.
Пользователи взаимодействуют с документом через связанный с ним объект класса CView. Класс представления выполняет отображение документа в окне и преобразует вводимую пользователем информацию в соответствующие изменения в документе. Один класс документа может быть связан с несколькими классами представления. Когда пользователь открывает окно документа, приложение создает объект соответствующего класса представления и присоединяет его к документу. Шаблон документа определяет класс представления и класс окна, соответствующие данному типу документа.
Классы документов включены в стандартную процедуру обработки сообщений в приложении и, следовательно, могут получать команды от стандартных компонентов интерфейса пользователя, например, от команды меню File|Save (Файл|Сохранить). Документ получает команды, посланные активным классом представления. Если документ не обрабатывает данную команду, то она передается шаблону документа для дальнейшей обработки.
Когда в документ вносятся изменения, каждый из связанных с ним объектов класса представления должен отразить эти изменения. Класс CDocument имеет функцию-член класса UpdateAllViews, позволяющую приложению сообщить всем связанным с данным документом объектам класса представления о том, что в документ внесены изменения и данные объекты должны внести соответствующие изменения в выводимую ими информацию. Перед закрытием документа приложение запрашивает пользователя о необходимости сохранить внесенные в него изменения.
Чтобы создать собственный класс документа:
1. Создайте класс, производный от класса CDocument.
2. Включите в него переменные для хранения пользовательских данных.
3. Создайте методы для чтения и внесения изменений в эти данные. В основном этими методами будут пользоваться связанные с документом объекты класса представления.
4. Перегрузите функцию CObject::Serialize, позволяющую читать и записывать документы на диск.
Описание данного класса содержится в файле заголовка afxwin. h.
Примеры использования этого класса можно найти во многих главах данной книги, но наиболее полное его описание приведено в главе 2.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |


