Поделиться через


Класс CDC

Определяет класс объектов контекста устройства.

Синтаксис

class CDC : public CObject

Участники

Открытые конструкторы

Имя Описание
CDC::CDC Формирует объект CDC.

Открытые методы

Имя Описание
CDC::AbortDoc Завершает текущее задание печати, стирая все приложение, записанное на устройство с момента последнего вызова StartDoc функции-члена.
CDC::AbortPath Закрывает и удаляет все пути в контексте устройства.
CDC::AddMetaFileComment Копирует комментарий из буфера в указанный метафайл расширенного формата.
CDC::AlphaBlend Отображает растровые изображения с прозрачными или полутранспарентными пикселями.
CDC::AngleArc Рисует сегмент линии и дугу и перемещает текущую позицию в конечную точку дуги.
CDC::Arc Рисует эллиптическую дугу.
CDC::ArcTo Рисует эллиптическую дугу. Эта функция аналогична Arc, за исключением того, что текущая позиция обновляется.
CDC::Attach Присоединяет контекст устройства Windows к этому CDC объекту.
CDC::BeginPath Открывает скобку пути в контексте устройства.
CDC::BitBlt Копирует растровое изображение из указанного контекста устройства.
CDC::Chord Рисует аккорд (закрытая фигура, ограничивающая пересечением многоточия и сегмента линии).
CDC::CloseFigure Закрывает открытую фигуру в пути.
CDC::CreateCompatibleDC Создает контекст устройства памяти, совместимый с другим контекстом устройства. Его можно использовать для подготовки изображений в памяти.
CDC::CreateDC Создает контекст устройства для определенного устройства.
CDC::CreateIC Создает контекст сведений для определенного устройства. Это обеспечивает быстрый способ получения сведений об устройстве без создания контекста устройства.
CDC::DeleteDC Удаляет контекст устройства Windows, связанный с этим CDC объектом.
CDC::DeleteTempMap Вызывается обработчиком CWinApp времени простоя, чтобы удалить любой временный CDC объект, созданный с помощью FromHandle. Кроме того, отсоединяет контекст устройства.
CDC::Detach Отсоединяет контекст устройства Windows от этого CDC объекта.
CDC::DPtoHIMETRIC Преобразует единицы устройства в HIMETRIC единицы.
CDC::DPtoLP Преобразует единицы устройства в логические единицы.
CDC::Draw3dRect Рисует трехмерный прямоугольник.
CDC::DrawDragRect Удаляет и перерисовывает прямоугольник, как он перетаскивается.
CDC::DrawEdge Рисует края прямоугольника.
CDC::DrawEscape Обращается к возможностям рисования видеотрансляции, которые не доступны напрямую через интерфейс графического устройства (GDI).
CDC::DrawFocusRect Рисует прямоугольник в стиле, используемом для указания фокуса.
CDC::DrawFrameControl Рисование элемента управления кадром.
CDC::DrawIcon Рисует значок.
CDC::DrawState Отображает изображение и применяет визуальный эффект для указания состояния.
CDC::DrawText Рисует форматированный текст в указанном прямоугольнике.
CDC::DrawTextEx Рисует форматированный текст в указанном прямоугольнике с помощью других форматов.
CDC::Ellipse Рисование эллипса.
CDC::EndDoc Завершает задание печати, запущенное функцией-членом StartDoc .
CDC::EndPage Сообщает драйверу устройства о завершении страницы.
CDC::EndPath Закрывает скобку пути и выбирает путь, определенный скобкой в контексте устройства.
CDC::EnumObjects Перечисляет ручки и кисти, доступные в контексте устройства.
CDC::Escape Позволяет приложениям получать доступ к объектам, которые не доступны напрямую с определенного устройства через GDI. Кроме того, разрешает доступ к функциям escape-сервера Windows. Escape-вызовы, выполняемые приложением, претворяются и отправляются драйверу устройства.
CDC::ExcludeClipRect Создает новый регион вырезки, состоящий из существующей области вырезки минус указанный прямоугольник.
CDC::ExcludeUpdateRgn Запрещает рисование в недопустимых областях окна, исключая обновленный регион в окне из области вырезки.
CDC::ExtFloodFill Заполняет область текущей кистью. Обеспечивает большую CDC::FloodFill гибкость, чем функция-член.
CDC::ExtTextOut Записывает символьную строку в прямоугольную область с помощью выбранного в данный момент шрифта.
CDC::FillPath Закрывает все открытые фигуры в текущем пути и заполняет интерьер пути с помощью текущего режима заполнения кисти и многоугольника.
CDC::FillRect Заполняет заданный прямоугольник с помощью определенной кисти.
CDC::FillRgn Заполняет определенный регион указанной кистью.
CDC::FillSolidRect Заполняет прямоугольник сплошным цветом.
CDC::FlattenPath Преобразует все кривые в пути, выбранном в текущем контексте устройства, и преобразует каждую кривую в последовательность строк.
CDC::FloodFill Заполняет область текущей кистью.
CDC::FrameRect Рисует границу вокруг прямоугольника.
CDC::FrameRgn Рисует границу вокруг определенного региона с помощью кисти.
CDC::FromHandle Возвращает указатель на CDC объект при указании дескриптора контекста устройства. CDC Если объект не присоединен к дескриптору, создается и присоединяется временный CDC объект.
CDC::GetArcDirection Возвращает текущее направление дуги для контекста устройства.
CDC::GetAspectRatioFilter Извлекает параметр для текущего фильтра пропорций.
CDC::GetBkColor Извлекает текущий цвет фона.
CDC::GetBkMode Извлекает фоновый режим.
CDC::GetBoundsRect Возвращает текущий накопленный ограничивающий прямоугольник для указанного контекста устройства.
CDC::GetBrushOrg Извлекает источник текущей кисти.
CDC::GetCharABCWidths Извлекает ширину в логических единицах последовательных символов в заданном диапазоне от текущего шрифта.
CDC::GetCharABCWidthsI Извлекает ширину в логических единицах последовательных индексов глифов в указанном диапазоне от текущего шрифта TrueType.
CDC::GetCharacterPlacement Извлекает различные типы сведений о строке символов.
CDC::GetCharWidth Извлекает дробную ширину последовательных символов в заданном диапазоне от текущего шрифта.
CDC::GetCharWidthI Извлекает ширину в логических координатах последовательных индексов глифов в указанном диапазоне от текущего шрифта.
CDC::GetClipBox Извлекает размеры жестко ограничивающего прямоугольника вокруг текущей границы обрезки.
CDC::GetColorAdjustment Извлекает значения корректировки цвета для контекста устройства.
CDC::GetCurrentBitmap Возвращает указатель на текущий выбранный CBitmap объект.
CDC::GetCurrentBrush Возвращает указатель на текущий выбранный CBrush объект.
CDC::GetCurrentFont Возвращает указатель на текущий выбранный CFont объект.
CDC::GetCurrentPalette Возвращает указатель на текущий выбранный CPalette объект.
CDC::GetCurrentPen Возвращает указатель на текущий выбранный CPen объект.
CDC::GetCurrentPosition Извлекает текущую позицию пера (в логических координатах).
CDC::GetDCBrushColor Получает текущий цвет кисти.
CDC::GetDCPenColor Получает текущий цвет пера.
CDC::GetDeviceCaps Извлекает указанный тип сведений о возможностях устройства отображения.
CDC::GetFontData Извлекает данные метрик шрифта из масштабируемого файла шрифта. Извлекаемая информация определяется путем указания смещения в файл шрифта и длины возвращаемой информации.
CDC::GetFontLanguageInfo Возвращает сведения о выбранном шрифте для указанного контекста отображения.
CDC::GetGlyphOutline Извлекает кривую контура или растровое изображение для символа структуры в текущем шрифте.
CDC::GetGraphicsMode Извлекает текущий графический режим для указанного контекста устройства.
CDC::GetHalftoneBrush Извлекает полутонную кисть.
CDC::GetKerningPairs Извлекает пары кернинга символов для шрифта, выбранного в текущем контексте устройства.
CDC::GetLayout Извлекает макет контекста устройства (DC). Макет может быть слева направо (по умолчанию) или справа налево (зеркально).
CDC::GetMapMode Извлекает текущий режим сопоставления.
CDC::GetMiterLimit Возвращает ограничение митер для контекста устройства.
CDC::GetNearestColor Извлекает ближайший логический цвет к указанному логическому цвету, который может представлять данное устройство.
CDC::GetOutlineTextMetrics Извлекает сведения о метриках шрифта для шрифтов TrueType.
CDC::GetOutputCharWidth Извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта с помощью контекста выходного устройства.
CDC::GetOutputTabbedTextExtent Вычисляет ширину и высоту символьной строки в контексте выходного устройства.
CDC::GetOutputTextExtent Вычисляет ширину и высоту строки текста в контексте выходного устройства с помощью текущего шрифта для определения измерений.
CDC::GetOutputTextMetrics Извлекает метрики текущего шрифта из контекста выходного устройства.
CDC::GetPath Извлекает координаты, определяющие конечные точки линий и контрольные точки кривых, найденных в пути, выбранном в контексте устройства.
CDC::GetPixel Извлекает значение цвета RGB пикселя в указанной точке.
CDC::GetPolyFillMode Извлекает текущий режим заполнения многоугольников.
CDC::GetROP2 Извлекает текущий режим рисования.
CDC::GetSafeHdc Возвращает CDC::m_hDCконтекст выходного устройства.
CDC::GetStretchBltMode Извлекает текущий режим растягивания растровых изображений.
CDC::GetTabbedTextExtent Вычисляет ширину и высоту символьной строки в контексте устройства атрибута.
CDC::GetTextAlign Извлекает флаги выравнивания текста.
CDC::GetTextCharacterExtra Извлекает текущий параметр для количества интервалов между диаграммами.
CDC::GetTextColor Извлекает текущий цвет текста.
CDC::GetTextExtent Вычисляет ширину и высоту строки текста в контексте устройства атрибута с помощью текущего шрифта для определения измерений.
CDC::GetTextExtentExPointI Извлекает количество символов в указанной строке, которая будет соответствовать заданному пространству и заполняет массив экстентом текста для каждого из этих символов.
CDC::GetTextExtentPointI Извлекает ширину и высоту указанного массива глифовых индексов.
CDC::GetTextFace Копирует имя шрифта текущего шрифта в буфер в виде строки, завершаемой значением NULL.
CDC::GetTextMetrics Извлекает метрики текущего шрифта из контекста устройства атрибута.
CDC::GetViewportExt Извлекает x-и y-экстенты окна просмотра.
CDC::GetViewportOrg Извлекает координаты x-и y источника окна просмотра.
CDC::GetWindow Возвращает окно, связанное с контекстом устройства отображения.
CDC::GetWindowExt Извлекает x-и y-экстенты связанного окна.
CDC::GetWindowOrg Извлекает координаты x-и y источника связанного окна.
CDC::GetWorldTransform Извлекает текущее преобразование пространства мира в пространство страницы.
CDC::GradientFill Заполняет прямоугольники и треугольники структурами с цветом градации.
CDC::GrayString Рисует неактивный (серый) текст в заданном расположении.
CDC::HIMETRICtoDP Преобразует единицы HIMETRIC в единицы устройства.
CDC::HIMETRICtoLP Преобразует единицы HIMETRIC в логические единицы.
CDC::IntersectClipRect Создает новую область вырезки, формируя пересечение текущего региона и прямоугольника.
CDC::InvertRect Инвертирует содержимое прямоугольника.
CDC::InvertRgn Инвертирует цвета в регионе.
CDC::IsPrinting Определяет, используется ли контекст устройства для печати.
CDC::LineTo Рисует линию от текущей позиции до, но не включая точку.
CDC::LPtoDP Преобразует логические единицы в единицы устройства.
CDC::LPtoHIMETRIC Преобразует логические единицы в единицы HIMETRIC.
CDC::MaskBlt Объединяет данные цвета для исходных и целевых растровых изображений с помощью заданной операции маски и растра.
CDC::ModifyWorldTransform Изменяет преобразование мира для контекста устройства с помощью указанного режима.
CDC::MoveTo Перемещает текущую позицию.
CDC::OffsetClipRgn Перемещает область вырезки заданного устройства.
CDC::OffsetViewportOrg Изменяет источник окна просмотра относительно координат текущего источника представления.
CDC::OffsetWindowOrg Изменяет источник окна относительно координат текущего источника окна.
CDC::PaintRgn Заполняет область выбранной кистью.
CDC::PatBlt Создает битовый шаблон.
CDC::Pie Рисует кругообразную клину.
CDC::PlayMetaFile Воспроизводит содержимое указанного метафайла на данном устройстве. Расширенная версия PlayMetaFile отображает рисунок, хранящийся в заданном метафайле расширенного формата. Метафайл можно воспроизводить любое количество раз.
CDC::PlgBlt Выполняет передачу битов цветовых данных из указанного прямоугольника в контексте исходного устройства на указанную параллелограмму в заданном контексте устройства.
CDC::PolyBezier Рисует одну или несколько сплайнов Bzier. Текущая позиция не используется или не обновляется.
CDC::PolyBezierTo Рисует одну или несколько сплайнов Bzier и перемещает текущую позицию в конечную точку последнего сплайна Bzier.
CDC::PolyDraw Рисует набор сегментов линий и сплайнов Bzier. Эта функция обновляет текущую позицию.
CDC::Polygon Рисует многоугольник, состоящий из двух или более точек (вершин), соединенных линиями.
CDC::Polyline Рисует набор сегментов линий, соединяющих указанные точки.
CDC::PolylineTo Рисует одну или несколько прямых линий и перемещает текущую позицию в конечную точку последней строки.
CDC::PolyPolygon Создает два или более многоугольников, заполненных с помощью текущего режима заполнения многоугольников. Многоугольники могут быть развязаны или могут перекрываться.
CDC::PolyPolyline Рисует несколько рядов сегментов подключенной линии. Текущая позиция не используется или обновляется этой функцией.
CDC::PtVisible Указывает, находится ли указанная точка в регионе вырезки.
CDC::RealizePalette Сопоставляет записи палитры в текущей логической палитре с системной палитрой.
CDC::Rectangle Рисует прямоугольник с помощью текущего пера и заполняет его с помощью текущей кисти.
CDC::RectVisible Определяет, находится ли любая часть заданного прямоугольника в области вырезки.
CDC::ReleaseAttribDC Выпуски m_hAttribDC, контекст устройства атрибута.
CDC::ReleaseOutputDC Выпуски m_hDC, контекст выходного устройства.
CDC::ResetDC m_hAttribDC Обновляет контекст устройства.
CDC::RestoreDC Восстанавливает контекст устройства до предыдущего состояния, сохраненного с SaveDCпомощью .
CDC::RoundRect Рисует прямоугольник с закругленными углами с помощью текущего пера и заполняется с помощью текущей кисти.
CDC::SaveDC Сохраняет текущее состояние контекста устройства.
CDC::ScaleViewportExt Изменяет степень окна просмотра относительно текущих значений.
CDC::ScaleWindowExt Изменяет экстенты окна относительно текущих значений.
CDC::ScrollDC Прокручивает прямоугольник битов по горизонтали и по вертикали.
CDC::SelectClipPath Выбирает текущий путь в качестве области вырезки для контекста устройства, сочетая новый регион с любым существующим регионом вырезки с помощью указанного режима.
CDC::SelectClipRgn Объединяет заданный регион с текущим регионом вырезки с помощью указанного режима.
CDC::SelectObject Выбирает объект рисования GDI, например перо.
CDC::SelectPalette Выбирает логическую палитру.
CDC::SelectStockObject Выбирает один из предопределенных стандартных перьев, кистей или шрифтов, предоставляемых Windows.
CDC::SetAbortProc Задает функцию обратного вызова, предоставляемую программистом, которая вызываетСя Windows, если задание печати должно быть прервано.
CDC::SetArcDirection Задает направление рисования, которое будет использоваться для функций дуги и прямоугольника.
CDC::SetAttribDC Задает m_hAttribDC, контекст устройства атрибута.
CDC::SetBkColor Задает текущий цвет фона.
CDC::SetBkMode Задает фоновый режим.
CDC::SetBoundsRect Управляет накоплением ограничивающих прямоугольников для указанного контекста устройства.
CDC::SetBrushOrg Указывает источник для следующей кисти, выбранной в контексте устройства.
CDC::SetColorAdjustment Задает значения корректировки цвета для контекста устройства с помощью указанных значений.
CDC::SetDCBrushColor Задает текущий цвет кисти.
CDC::SetDCPenColor Задает текущий цвет пера.
CDC::SetGraphicsMode Задает текущий графический режим для указанного контекста устройства.
CDC::SetLayout Изменяет макет контекста устройства (DC).
CDC::SetMapMode Задает текущий режим сопоставления.
CDC::SetMapperFlags Изменяет алгоритм, который средство сопоставления шрифтов использует при сопоставлении логических шрифтов с физическими шрифтами.
CDC::SetMiterLimit Задает ограничение длины соединений miter для контекста устройства.
CDC::SetOutputDC Задает m_hDCконтекст выходного устройства.
CDC::SetPixel Задает пиксель в указанной точке в ближайшее приближение указанного цвета.
CDC::SetPixelV Задает пиксель в указанных координатах ближайшим приближением указанного цвета. SetPixelV быстрее, чем SetPixel из-за того, что он не должен возвращать значение цвета окрашенной точки.
CDC::SetPolyFillMode Задает режим многоугольника.
CDC::SetROP2 Задает текущий режим рисования.
CDC::SetStretchBltMode Задает режим растягивания растровых изображений.
CDC::SetTextAlign Задает флаги выравнивания текста.
CDC::SetTextCharacterExtra Задает количество интервалов между диаграммами.
CDC::SetTextColor Задает цвет текста.
CDC::SetTextJustification Добавляет пробел в символы останова в строке.
CDC::SetViewportExt Задает x-и y-экстенты окна просмотра.
CDC::SetViewportOrg Задает источник окна просмотра.
CDC::SetWindowExt Задает x-и y-экстенты связанного окна.
CDC::SetWindowOrg Задает источник окна контекста устройства.
CDC::SetWorldTransform Задает текущее преобразование пространства мира на страницу.
CDC::StartDoc Сообщает драйверу устройства, что запускается новое задание печати.
CDC::StartPage Сообщает драйверу устройства, что начинается новая страница.
CDC::StretchBlt Перемещает растровое изображение из исходного прямоугольника и устройства в целевой прямоугольник, растягивание или сжатие растрового рисунка при необходимости, чтобы соответствовать измерениям целевого прямоугольника.
CDC::StrokeAndFillPath Закрывает все открытые фигуры в пути, ударяет контур пути с помощью текущего пера и заполняет его интерьер с помощью текущей кисти.
CDC::StrokePath Отрисовывает указанный путь с помощью текущего пера.
CDC::TabbedTextOut Записывает символьную строку в указанном расположении, расширяя вкладки до значений, указанных в массиве позиций табуляции.
CDC::TextOut Записывает символьную строку в указанном расположении с помощью выбранного в данный момент шрифта.
CDC::TransparentBlt Передает битовый блок данных цвета из указанного контекста исходного устройства в контекст целевого устройства, отрисовка указанного цвета прозрачной в передаче.
CDC::UpdateColors Обновляет клиентская область контекста устройства, сопоставляя текущие цвета в клиентской области с системной палитрой на основе пикселей по пикселям.
CDC::WidenPath Переопределяет текущий путь в качестве области, которая будет окрашена, если путь был обрисован с помощью пера, выбранного в данный момент в контексте устройства.

Открытые операторы

Имя Описание
CDC::operator HDC Извлекает дескриптор контекста устройства.

Открытые члены данных

Имя Описание
CDC::m_hAttribDC Контекст атрибута устройства, используемый этим CDC объектом.
CDC::m_hDC Контекст выходного устройства, используемый этим CDC объектом.

Замечания

Объект CDC предоставляет функции-члены для работы с контекстом устройства, например с дисплеем или принтером, и членами для работы с контекстом отображения, связанным с клиентской областью окна.

Выполните все рисование через функции-члены CDC объекта. Класс предоставляет функции-члены для операций с контекстом устройства, работа с инструментами рисования, выбором объектов GDI и использованием цветов и палитр. Он также предоставляет функции-члены для получения и настройки атрибутов рисования, сопоставления, работы с окном, работы с экстентом окна, преобразования координат, работы с регионами, вырезки, линий рисования и рисования простых фигур, многоточия и многоугольников. Функции-члены также предоставляются для рисования текста, работы с шрифтами, использования экранов принтера, прокрутки и воспроизведения метафайлов.

Чтобы использовать CDC объект, создайте его, а затем вызовите его функции-члены, которые параллельные функции Windows, использующие контексты устройств.

Примечание.

В Windows 95/98 все координаты экрана ограничены 16 битами. Таким образом, передаваемая int CDC в функцию-член, должна находиться в диапазоне от -32768 до 32767.

Для конкретных использования библиотека классов Microsoft Foundation предоставляет несколько классов, производных от CDC . CPaintDC инкапсулирует вызовы BeginPaint и EndPaint. CClientDC управляет контекстом отображения, связанным с клиентской областью окна. CWindowDC управляет контекстом отображения, связанным со всем окном, включая его кадр и элементы управления. CMetaFileDC связывает контекст устройства с метафайлом.

CDC предоставляет две функции-члены GetLayout и SetLayoutдля восстановления макета контекста устройства, который не наследует его макет из окна. Такая ориентация справа налево необходима для приложений, написанных для культур, таких как арабский или иврит, где макет символа не является европейским стандартом.

CDCсодержит два контекста m_hDC CDC устройства и m_hAttribDC, который при создании объекта ссылается на одно и то же устройство. CDC направляет все выходные вызовы GDI и m_hDC большинство вызовов m_hAttribDCGDI атрибутов. (Пример вызова атрибута — GetTextColorэто SetTextColor вызов выходных данных.)

Например, платформа использует эти два контекста устройства для реализации CMetaFileDC объекта, который будет отправлять выходные данные в метафайл при чтении атрибутов с физического устройства. Предварительная версия печати реализована в платформе аналогичным образом. Вы также можете использовать два контекста устройства аналогичным образом в коде для конкретного приложения.

Иногда могут потребоваться текстовые метрики из m_hDC m_hAttribDC контекстов устройств. Следующие пары функций обеспечивают эту возможность:

Использует m_hAttribDC Использует m_hDC
GetTextExtent GetOutputTextExtent
GetTabbedTextExtent GetOutputTabbedTextExtent
GetTextMetrics GetOutputTextMetrics
GetCharWidth GetOutputCharWidth

Дополнительные сведения см. в CDCразделе "Контексты устройств".

Иерархия наследования

CObject

CDC

Требования

Заголовок: afxwin.h

CDC::AbortDoc

Завершает текущее задание печати и удаляет все, что приложение записывается на устройство с момента последнего вызова StartDoc функции-члена.

int AbortDoc();

Возвращаемое значение

Значение больше или равно 0 при успешном выполнении или отрицательное значение, если произошла ошибка. В следующем списке показаны распространенные значения ошибок и их значения:

  • SP_ERROR Общая ошибка.

  • SP_OUTOFDISK Недостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.

  • SP_OUTOFMEMORY Недостаточно памяти доступно для spooling.

  • SP_USERABORT Пользователь завершил задание с помощью диспетчера печати.

Замечания

Эта функция-член заменяет ABORTDOC экран-экран принтера.

AbortDoc следует использовать для завершения следующих действий:

  • Операции печати, не указывающие функцию прерывания с помощью SetAbortProc.

  • Операции печати, которые еще не достигли первого NEWFRAME или NEXTBAND escape-вызова.

Если приложение сталкивается с ошибкой печати или отмененной операцией печати, она не должна пытаться завершить операцию с помощью EndDoc функций класса или AbortDoc членов.CDC GDI автоматически завершает операцию перед возвратом значения ошибки.

Если приложение отображает диалоговое окно, позволяющее пользователю отменить операцию печати, перед уничтожением диалогового окна он должен вызываться AbortDoc .

Если диспетчер печати использовался для запуска задания печати, вызов AbortDoc удаляет все задание спула, принтер не получает ничего. Если диспетчер печати не использовался для запуска задания печати, данные, возможно, были отправлены на принтер до AbortDoc вызова. В этом случае драйвер принтера сбросил принтер (по возможности) и закрыл задание печати.

Пример

Пример см. в примере CDC::StartDoc.

CDC::AbortPath

Закрывает и удаляет все пути в контексте устройства.

BOOL AbortPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Если в контексте устройства есть открытая скобка пути, путь закрывается и путь удаляется. Если в контексте устройства есть закрытый путь, путь удаляется.

CDC::AddMetaFileComment

Копирует комментарий из буфера в указанный метафайл расширенного формата.

BOOL AddMetaFileComment(
    UINT nDataSize,
    const BYTE* pCommentData);

Параметры

nDataSize
Указывает длину буфера комментариев в байтах.

pCommentData
Указывает на буфер, содержащий комментарий.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Комментарий может включать любую частную информацию, например источник рисунка и дату его создания. Комментарий должен начинаться с подписи приложения, а затем данных. Примечания не должны содержать данные о позиции. Данные, относящиеся к позиции, указывают расположение записи и не должны включаться, так как один метафайл может быть внедрен в другой метафайл. Эту функцию можно использовать только с расширенными метафайлами.

CDC::AlphaBlend

Вызовите эту функцию-член, чтобы отобразить растровые изображения с прозрачными или полутранспарентными пикселями.

BOOL AlphaBlend(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    BLENDFUNCTION blend);

Параметры

xDest
Задает координату x в логических единицах верхнего левого угла прямоугольника назначения.

yDest
Задает координату y в логических единицах верхнего левого угла прямоугольника назначения.

nDestWidth
Задает ширину в логических единицах целевого прямоугольника.

nDestHeight
Задает высоту в логических единицах прямоугольника назначения.

pSrcDC
Указатель на контекст исходного устройства.

xSrc
Задает координату x в логических единицах левого верхнего угла исходного прямоугольника.

ySrc
Задает координату y в логических единицах верхнего левого угла исходного прямоугольника.

nSrcWidth
Задает ширину в логических единицах исходного прямоугольника.

nSrcHeight
Задает высоту в логических единицах исходного прямоугольника.

blend
Указывает структуру BLENDFUNCTION .

Возвращаемое значение

Значение TRUE в случае успешного выполнения; в противном случае — значение FALSE.

Замечания

Дополнительные сведения см AlphaBlend . в пакете SDK для Windows.

CDC::AngleArc

Рисует сегмент линии и дугу.

BOOL AngleArc(
    int x,
    int y,
    int nRadius,
    float fStartAngle,
    float fSweepAngle);

Параметры

x
Задает логическую координату x центра круга.

y
Задает логическую координату Y центра круга.

nRadius
Указывает радиус круга в логических единицах. Это значение должно быть положительным.

fStartAngle
Задает начальный угол в градусах относительно оси x.

fSweepAngle
Задает угол отвертки в градусах относительно начального угла.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Сегмент линии рисуется от текущей позиции к началу дуги. Дуга рисуется вдоль периметра круга с заданным радиусом и центром. Длина дуги определяется заданными углами начала и свертки.

AngleArc перемещает текущую позицию в конечную точку дуги. Дуга, рисуемая этой функцией, может быть эллиптической в зависимости от текущего режима преобразования и сопоставления. Перед рисованием дуги эта функция рисует сегмент линии от текущей позиции до начала дуги. Дуга рисуется путем создания мнимого круга с указанным радиусом вокруг указанной точки центра. Начальная точка дуги определяется измерением счетчика с оси x круга по количеству градусов в начальном углу. Конечная точка находится аналогичным образом путем измерения счетчика с начальной точки по количеству градусов в углу сверток.

Если угол отвертки больше 360 градусов дуги, то несколько раз прометается дуга. Эта функция рисует линии с помощью текущего пера. Рисунок не заполнен.

CDC::Arc

Рисует эллиптическую дугу.

BOOL Arc(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Arc(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Параметры

x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).

y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).

x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).

y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).

x3
Указывает координату x точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

y3
Указывает координату y точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

x4
Задает координату x точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

y4
Указывает координату y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Для этого параметра можно передать LPRECT объект или CRect объект.

ptStart
Задает координаты x-и y точки, определяющей начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT CPoint или объект.

ptEnd
Задает координаты x-и y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Дуга, рисуемая с помощью функции, является сегментом многоточия, определенного заданным ограничивающим прямоугольником.

Фактический отправной точкой дуги является точка, в которой луч, нарисованный из центра ограничивающего прямоугольника через указанную начальную точку пересекает многоточие. Фактическая конечная точка дуги — это точка, в которой луч, нарисованный из центра ограничивающего прямоугольника через указанную конечную точку пересекается с многоточием. Дуга рисуется в направлении счетчика. Так как дуга не является закрытой фигурой, она не заполнена. Ширина и высота прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.

Пример

void CDCView::DrawArc(CDC *pDC)
{
   // Fill the client area with a thin circle. The circle's
   // interior is not filled. The circle's perimeter is
   // blue from 6 o'clock to 3 o'clock and red from 3
   // o'clock to 6 o'clock.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens.
   CPen penBlue;
   CPen penRed;
   CPen *pOldPen;

   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen.

   pOldPen = pDC->SelectObject(&penBlue);

   pDC->Arc(rectClient,
            CPoint(rectClient.right, rectClient.CenterPoint().y),
            CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw from 6 o'clock to 3 o'clock, counterclockwise,
   // in a red pen.
   pDC->SelectObject(&penRed);

   // Keep the same parameters, but reverse start
   // and end points.
   pDC->Arc(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::ArcTo

Рисует эллиптическую дугу.

BOOL ArcTo(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL ArcTo(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Параметры

x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).

y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).

x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).

y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).

x3
Указывает координату x точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

y3
Указывает координату y точки, которая определяет начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

x4
Задает координату x точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

y4
Указывает координату y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT структуру данных или CRect объект для этого параметра.

ptStart
Задает координаты x-и y точки, определяющей начальную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Можно передать структуру POINT данных или CPoint объект для этого параметра.

ptEnd
Задает координаты x-и y точки, определяющей конечную точку дуги (в логических единицах). Этой точке не нужно лежать точно на дуге. Можно передать структуру POINT данных или CPoint объект для этого параметра.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция аналогична CDC::Arc, за исключением того, что текущая позиция обновляется. Точки (, y1) и (x1x2), y2указывают ограничивающий прямоугольник. Многоточие, сформированное заданным ограничивающим прямоугольником, определяет кривую дуги. Дуга расширяется по счетчику (направление дуги по умолчанию) от точки, в которой она пересекает радиальную линию из центра ограничивающего прямоугольника (*x3*, y3). Дуга заканчивается, где он пересекает радиальную линию от центра ограничивающего прямоугольника к ( x4, y4). Если начальная точка и конечная точка совпадают, то рисуется полный многоточие.

Линия рисуется от текущей позиции к начальной точке дуги. Если ошибка не возникает, текущая позиция устанавливается в конечную точку дуги. Дуга рисуется с помощью текущего пера; он не заполнен.

CDC::Attach

Используйте эту функцию-член для присоединения hDC объекта к объекту CDC .

BOOL Attach(HDC hDC);

Параметры

hDC
Контекст устройства Windows.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Он hDC хранится как в контексте выходного устройства, так m_hDCи в m_hAttribDCконтексте атрибута.

CDC::BeginPath

Открывает скобку пути в контексте устройства.

BOOL BeginPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

После открытия скобки пути приложение может начать вызывать функции рисования GDI, чтобы определить точки, лежащие в пути. Приложение может закрыть скобку открытого EndPath пути, вызвав функцию-член. При вызове BeginPathприложения все предыдущие пути удаляются.

См BeginPath . в пакете SDK для Windows список функций рисования, определяющих точки в пути.

Пример

// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
   // Describe a 24-point truetype font of normal weight
   LOGFONT lf;
   memset(&lf, 0, sizeof(lf));
   lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
   lf.lfWeight = FW_NORMAL;
   lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;

   // create and select it
   CFont newFont;
   if (!newFont.CreateFontIndirect(&lf))
      return;
   CFont *pOldFont = pDC->SelectObject(&newFont);

   // use a path to record how the text was drawn
   pDC->BeginPath();
   pDC->TextOut(10, 10, _T("Outline this!"));
   pDC->EndPath();

   // Find out how many points are in the path. Note that
   // for long strings or complex fonts, this number might be
   // gigantic!
   int nNumPts = pDC->GetPath(NULL, NULL, 0);
   if (nNumPts == 0)
      return;

   // Allocate memory to hold points and stroke types from
   // the path.
   LPPOINT lpPoints = NULL;
   LPBYTE lpTypes = NULL;
   try
   {
      lpPoints = new POINT[nNumPts];
      lpTypes = new BYTE[nNumPts];
   }
   catch (CException *pe)
   {
      delete[] lpPoints;
      lpPoints = NULL;
      delete[] lpTypes;
      lpTypes = NULL;
      pe->Delete();
   }
   if (lpPoints == NULL || lpTypes == NULL)
      return;

   // Now that we have the memory, really get the path data.
   nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);

   // If it worked, draw the lines. Windows 98 doesn't support
   // the PolyDraw API, so we use our own member function to do
   // similar work. If you're targeting only later versions of
   // Windows, you can use the PolyDraw() API and avoid the
   // COutlineView::PolyDraw() member function.

   if (nNumPts != -1)
      pDC->PolyDraw(lpPoints, lpTypes, nNumPts);

   // Release the memory we used
   delete[] lpPoints;
   delete[] lpTypes;

   // Put back the old font
   pDC->SelectObject(pOldFont);

   return;
}

CDC::BitBlt

Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.

BOOL BitBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    DWORD dwRop);

Параметры

x
Задает логическую координату x левого верхнего угла прямоугольника назначения.

y
Задает логическую координату y верхнего левого угла прямоугольника назначения.

nWidth
Задает ширину (в логических единицах) целевого прямоугольника и исходного растрового изображения.

nHeight
Задает высоту (в логических единицах) целевого прямоугольника и исходного растрового изображения.

pSrcDC
Указатель на объект, определяющий CDC контекст устройства, из которого будет скопирована растровая карта. Он должен быть NULL , если dwRop указывает операцию растра, которая не включает источник.

xSrc
Задает логическую координату x левого верхнего угла исходного растрового изображения.

ySrc
Указывает логическую координату Y верхнего левого угла исходного растрового изображения.

dwRop
Определяет подлежащую выполнению растровую операцию. Коды операций растра определяют, как GDI объединяет цвета в выходных операциях, включающих текущую кисть, возможное исходное растровое изображение и целевое растровое изображение. Ознакомьтесь BitBlt со списком кодов dwRop операций растровых операций и их описаниями в пакете SDK для Windows

Полный список кодов растровых операций см. в разделе "Сведения о кодах операций растеров" в пакете SDK для Windows.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Приложение может выровнять окна или клиентские области по границам байтов, чтобы убедиться, что BitBlt операции выполняются в прямоугольниках, выровненных по байтам. (Установите CS_BYTEALIGNWINDOW или CS_BYTEALIGNCLIENT флаги при регистрации классов окон.)

BitBlt операции с прямоугольниками с выравниванием байтов значительно быстрее, чем BitBlt операции с прямоугольниками, которые не выровнены по байтам. Если вы хотите указать стили классов, такие как выравнивание байтов для собственного контекста устройства, необходимо зарегистрировать класс окон, а не полагаться на классы Microsoft Foundation, чтобы сделать это для вас. Используйте глобальную функцию AfxRegisterWndClass.

GDI преобразуется nWidth и nHeightодин раз с помощью контекста конечного устройства и один раз с помощью контекста исходного устройства. Если полученные экстенты не соответствуют, GDI использует функцию Windows StretchBlt для сжатия или растяжения исходного растрового изображения по мере необходимости.

Если растровые изображения назначения, источника и шаблона не имеют одного и того же формата цвета, BitBlt функция преобразует исходные и узорные растровые изображения в соответствии с назначением. Цвета переднего плана и фона целевого растрового изображения используются в преобразовании.

BitBlt Когда функция преобразует монохромное растровое изображение в цвет, он задает белые биты (1) в цвет фона и черные биты (0) в цвет переднего плана. Используются цвета переднего плана и фона контекста целевого устройства. Чтобы преобразовать цвет в монохромный, задает пиксели, BitBlt соответствующие цвету фона белому цвету, и задает все остальные пиксели черным. BitBlt использует цвет переднего плана и фона контекста цветового устройства для преобразования из цвета в монохромный.

Не все контексты устройства поддерживаются BitBlt. Чтобы проверить, поддерживает BitBltли данный контекст устройства, используйте GetDeviceCaps функцию-член и укажите индекс RASTERCAPS.

Пример

Пример см. в примере CDC::CreateCompatibleDC.

CDC::CDC

Формирует объект CDC.

CDC();

CDC::Chord

Рисует аккорд (закрытая фигура, ограничивающая пересечением многоточия и сегмента линии).

BOOL Chord(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Chord(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Параметры

x1
Задает координату x левого верхнего угла ограничивающего прямоугольника аккорда (в логических единицах).

y1
Задает координату y левого верхнего угла ограничивающего прямоугольника аккорда (в логических единицах).

x2
Задает координату x правого нижнего угла ограничивающего прямоугольника аккорда (в логических единицах).

y2
Задает координату y правого нижнего угла ограничивающего прямоугольника аккорда (в логических единицах).

x3
Указывает координату x точки, которая определяет начальную точку аккорда (в логических единицах).

y3
Указывает координату y точки, которая определяет начальную точку аккорда (в логических единицах).

x4
Указывает координату x точки, которая определяет конечную точку аккорда (в логических единицах).

y4
Указывает координату y точки, которая определяет конечную точку аккорда (в логических единицах).

lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Для этого параметра можно передать LPRECT объект или CRect объект.

ptStart
Задает координаты x-и y точки, которая определяет начальную точку аккорда (в логических единицах). Этот момент не должен лежать точно на аккорде. Для этого параметра можно передать структуру POINT CPoint или объект.

*ptEnd*
Задает координаты x-и y точки, определяющей конечную точку аккорда (в логических единицах). Этот момент не должен лежать точно на аккорде. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Параметры ( x1, y1) x2y2указывают верхние и нижние правые угла соответственно прямоугольника, ограничивающего многоточие, которое является частью аккорда. Параметры ( x3, y3) x4y4указывают конечные точки линии, пересекающей многоточие. Аккорд рисуется с помощью выбранного пера и заполняется с помощью выбранной кисти.

Рисунок, рисуемый Chord функцией, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1

Пример

void CDCView::DrawChord(CDC *pDC)
{
   // Fill the client area with a circle. The circle is
   // blue and filled with blue, but has a chord cut out
   // of it from 3 o'clock to 6 o'clock. That chord is
   // red and filled with a red diagonal hatch.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens and similar brushes.
   CPen penBlue, penRed;
   CBrush brushBlue, brushRed;
   CBrush *pOldBrush;
   CPen *pOldPen;

   brushBlue.CreateSolidBrush(RGB(0, 0, 255));
   brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen with a solid blue fill.
   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

   pDC->Chord(rectClient,
              CPoint(rectClient.right, rectClient.CenterPoint().y),
              CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw the remaining quarter chord from 6 o'clock
   // to 3 o'clock, counterclockwise, in a red pen
   // with the hatched brush.
   pDC->SelectObject(&penRed);
   pDC->SelectObject(&brushRed);

   // Keep the same parameters, but reverse start and
   // end points.
   pDC->Chord(rectClient,
              CPoint(rectClient.CenterPoint().x, rectClient.right),
              CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::CloseFigure

Закрывает открытую фигуру в пути.

BOOL CloseFigure();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Функция закрывает рисунок, рисуя линию из текущей позиции до первой точки фигуры (обычно точек, указанной последним вызовом MoveTo функции-члена) и подключает строки с помощью стиля соединения линий. Если фигура закрыта с помощью LineTo функции-члена, вместо нее CloseFigureиспользуются конечные крышки, чтобы создать угол вместо соединения. CloseFigure следует вызывать только в том случае, если в контексте устройства есть открытая скобка пути.

Рисунок в пути открыт, если он явно не закрыт с помощью этой функции. (Рисунок может быть открыт, даже если текущая точка и начальная точка фигуры совпадают.) Любая линия или кривая, добавленная к пути после CloseFigure запуска новой фигуры.

CDC::CreateCompatibleDC

Создает контекст устройства памяти, совместимый с устройством, указанным в параметре pDC.

BOOL CreateCompatibleDC(CDC* pDC);

Параметры

pDC
Указатель на контекст устройства. Если pDC это NULLтак, функция создает контекст устройства памяти, совместимый с системным дисплеем.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Контекст устройства памяти — это блок памяти, представляющий область отображения. Его можно использовать для подготовки изображений в памяти перед копированием на фактическую поверхность устройства совместимого устройства.

При создании контекста устройства памяти GDI автоматически выбирает для него 1-по 1 монохромное растровое изображение. Выходные функции GDI можно использовать с контекстом устройства памяти, только если в этом контексте был создан и выбран растровый рисунок.

Эту функцию можно использовать только для создания совместимых контекстов устройств для устройств, поддерживающих операции растра. Сведения о передаче битовых блоков между контекстами устройства см. в CDC::BitBlt функции-члене. Чтобы определить, поддерживает ли контекст устройства операции растра, см RC_BITBLT . возможность растра в функции-члене CDC::GetDeviceCaps.

Пример

// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
   // load IDB_BITMAP1 from our resources
   CBitmap bmp;
   if (bmp.LoadBitmap(IDB_BITMAP1))
   {
      // Get the size of the bitmap
      BITMAP bmpInfo;
      bmp.GetBitmap(&bmpInfo);

      // Create an in-memory DC compatible with the
      // display DC we're using to paint
      CDC dcMemory;
      dcMemory.CreateCompatibleDC(pDC);

      // Select the bitmap into the in-memory DC
      CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);

      // Find a centerpoint for the bitmap in the client area
      CRect rect;
      GetClientRect(&rect);
      int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
      int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;

      // Copy the bits from the in-memory DC into the on-
      // screen DC to actually do the painting. Use the centerpoint
      // we computed for the target offset.
      pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
                  0, 0, SRCCOPY);

      dcMemory.SelectObject(pOldBitmap);
   }
   else
   {
      TRACE0("ERROR: Where's IDB_BITMAP1?\n");
   }
}

CDC::CreateDC

Создает контекст устройства для указанного устройства.

BOOL CreateDC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

Параметры

lpszDriverName
Указывает на строку, завершающую значение NULL, которая указывает имя файла (без расширения) драйвера устройства (например, "EPSON"). Вы также можете передать CString объект для этого параметра.

lpszDeviceName
Указывает на строку, завершающую значение NULL, указывающую имя поддерживаемого устройства (например, "EPSON FX-80"). Параметр используется, lpszDeviceName если модуль поддерживает несколько устройств. Вы также можете передать CString объект для этого параметра.

lpszOutput
Указывает на строку, завершающую значение NULL, которая указывает имя файла или устройства для физического носителя выходных данных (порт файла или вывода). Вы также можете передать CString объект для этого параметра.

lpInitData
Указывает на структуру DEVMODE , содержащую данные инициализации для конкретного устройства для драйвера устройства. Функция Windows DocumentProperties извлекает эту структуру, заполненную для данного устройства. Параметр lpInitData должен бытьNULL, если драйвер устройства должен использовать инициализацию по умолчанию (если есть), указанную пользователем через панель управления.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Файл заголовка является обязательным, PRINT.H если DEVMODE используется структура.

Имена устройств следуют этим соглашениям: конечная двоеточие (:) рекомендуется, но необязательно. Windows удаляет завершающую двоеточие, чтобы имя устройства, заканчивающееся двоеточием, сопоставлялось с тем же портом, что и имя без двоеточия. Имена драйверов и портов не должны содержать начальные или конечные пробелы. Выходные функции GDI нельзя использовать с контекстами информации.

CDC::CreateIC

Создает контекст сведений для указанного устройства.

BOOL CreateIC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

Параметры

lpszDriverName
Указывает на строку, завершающую значение NULL, которая указывает имя файла (без расширения) драйвера устройства (например, "EPSON"). Объект для этого параметра можно передать CString .

lpszDeviceName
Указывает на строку, завершающую значение NULL, указывающую имя поддерживаемого устройства (например, "EPSON FX-80"). Параметр используется, lpszDeviceName если модуль поддерживает несколько устройств. Объект для этого параметра можно передать CString .

lpszOutput
Указывает на строку, завершающую значение NULL, которая указывает имя файла или устройства для физического носителя выходных данных (файла или порта). Объект для этого параметра можно передать CString .

lpInitData
Указывает на данные инициализации конкретного устройства для драйвера устройства. Параметр lpInitData должен бытьNULL, если драйвер устройства должен использовать инициализацию по умолчанию (если есть), указанную пользователем через панель управления. См CreateDC . формат данных для инициализации для конкретного устройства.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Контекст информации обеспечивает быстрый способ получения сведений об устройстве без создания контекста устройства.

Имена устройств следуют этим соглашениям: конечная двоеточие (:) рекомендуется, но необязательно. Windows удаляет завершающую двоеточие, чтобы имя устройства, заканчивающееся двоеточием, сопоставлялось с тем же портом, что и имя без двоеточия. Имена драйверов и портов не должны содержать начальные или конечные пробелы. Выходные функции GDI нельзя использовать с контекстами информации.

CDC::DeleteDC

Как правило, не вызывайте эту функцию; деструктор сделает это для вас.

BOOL DeleteDC();

Возвращаемое значение

Ненулевое значение, если функция успешно завершена; в противном случае — 0.

Замечания

Функция-член DeleteDC удаляет контексты устройств Windows, связанные с m_hDC текущим CDC объектом. Если этот CDC объект является последним активным контекстом устройства для данного устройства, все ресурсы хранилища и системы, используемые устройством, освобождаются.

Приложение не должно вызываться DeleteDC , если объекты были выбраны в контексте устройства. Объекты сначала должны быть выбраны из контекста устройства перед его удалением.

Приложение не должно удалять контекст устройства, дескриптор которого получен путем вызова CWnd::GetDC. Вместо этого он должен вызываться CWnd::ReleaseDC для освобождения контекста устройства. Предоставляются CClientDC классы для CWindowDC упаковки этих функций.

Функция DeleteDC обычно используется для удаления контекстов устройства, созданных с помощью CreateDC, CreateICили CreateCompatibleDC.

Пример

Пример см. в примере CPrintDialog::GetPrinterDC.

CDC::DeleteTempMap

Вызывается автоматически обработчиком CWinApp времени простоя, удаляет временные CDC объекты, DeleteTempMap созданные FromHandleс помощью, но не уничтожает дескриптор контекста устройства (hDCs) временно связанных с объектамиCDC.

static void PASCAL DeleteTempMap();

CDC::Detach

Вызовите эту функцию, чтобы отсоединить m_hDC (контекст выходного устройства) от CDC объекта и задать оба m_hDC значения m_hAttribDC NULL.

HDC Detach();

Возвращаемое значение

Контекст устройства Windows.

CDC::DPtoHIMETRIC

Эта функция используется при добавлении HIMETRIC размеров в OLE, преобразовывая пиксели HIMETRICв .

void DPtoHIMETRIC(LPSIZE lpSize) const;

Параметры

lpSize
Указывает на структуру или CSize объект SIZE.

Замечания

Если режим сопоставления объекта контекста устройства имеет MM_LOENGLISHзначение , MM_HIENGLISHMM_LOMETRICили MM_HIMETRIC, преобразование основано на количестве пикселей на физическом дюйме. Если режим сопоставления является одним из других неократных режимов (например, MM_TEXT), преобразование основано на количестве пикселей в логическом дюйме.

CDC::DPtoLP

Преобразует единицы устройства в логические единицы.

void DPtoLP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;

Параметры

lpPoints
Указывает на массив POINT структур или CPoint объектов.

nCount
Количество точек в массиве.

lpRect
Указывает на структуру RECT или CRect объект. Этот параметр используется для простого случая преобразования одного прямоугольника из точек устройства в логические точки.

lpSize
Указывает на структуру SIZE или CSize объект.

Замечания

Функция сопоставляет координаты каждой точки или измерения размера из системы координат устройства в логическую систему координат GDI. Преобразование зависит от текущего режима сопоставления и параметров источников и экстентов для окна устройства и окна просмотра.

CDC::Draw3dRect

Вызовите эту функцию-член, чтобы нарисовать трехмерный прямоугольник.

void Draw3dRect(
    LPCRECT lpRect,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

void Draw3dRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

Параметры

lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT структуру или CRect объект для этого параметра.

clrTopLeft
Задает цвет верхней и левой сторон трехмерного прямоугольника.

clrBottomRight
Задает цвет нижней и правой сторон трехмерного прямоугольника.

x
Задает логическую координату x левого верхнего угла трехмерного прямоугольника.

y
Задает логическую координату y левого верхнего угла трехмерного прямоугольника.

cx
Задает ширину трехмерного прямоугольника.

cy
Задает высоту трехмерного прямоугольника.

Замечания

Прямоугольник будет нарисован с верхними и левыми сторонами в цвете, указанном clrTopLeft в нижней и правой сторонах в цвете, заданном .clrBottomRight

Пример

void CDCView::Draw3dRect(CDC *pDC)
{
   // get the client area
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels on all sides
   rect.DeflateRect(20, 20);

   // draw a rectangle with red top and left sides, and
   // green right and bottom sides.
   pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));

   // This call to the four-integer override would draw
   // the same rectangle with a little less convenience:

   // pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
   //    RGB(255, 0, 0), RGB(0, 255, 0));
}

CDC::DrawDragRect

Вызовите эту функцию-член многократно, чтобы перераскрыть прямоугольник перетаскивания.

void DrawDragRect(
    LPCRECT lpRect,
    SIZE size,
    LPCRECT lpRectLast,
    SIZE sizeLast,
    CBrush* pBrush = NULL,
    CBrush* pBrushLast = NULL);

Параметры

lpRect
Указывает на RECT структуру или CRect объект, указывающий логические координаты прямоугольника— в данном случае конец отрисовки прямоугольника.

size
Задает смещение от верхнего левого угла внешней границы к левому верхнему углу внутренней границы (т. е. толщины границы) прямоугольника.

lpRectLast
Указывает на RECT структуру или CRect объект, указывающий логические координаты позиции прямоугольника — в данном случае исходная позиция прямоугольника.

sizeLast
Указывает перемещение из левого верхнего угла внешней границы в левый верхний угол внутренней границы (т. е. толщину границы) исходного прямоугольника, перезаписываемого.

pBrush
Указатель на объект кисти. Установите для NULL использования кисти по умолчанию полутон.

pBrushLast
Указатель на последний используемый объект кисти. Установите для NULL использования кисти по умолчанию полутон.

Замечания

Вызовите его в цикле в качестве образца позиции мыши, чтобы дать визуальный отзыв. При вызове DrawDragRectпредыдущий прямоугольник удаляется и создается новый прямоугольник. Например, когда пользователь перетаскивает прямоугольник по экрану, DrawDragRect стирает исходный прямоугольник и перерисовывает новый прямоугольник в новой позиции. По умолчанию рисует DrawDragRect прямоугольник с помощью полутонной кисти, чтобы исключить мерцание и создать внешний вид плавно перемещаемого прямоугольника.

При первом вызове DrawDragRectlpRectLast параметр должен бытьNULL.

CDC::DrawEdge

Вызовите эту функцию-член, чтобы нарисовать края прямоугольника указанного типа и стиля.

BOOL DrawEdge(
    LPRECT lpRect,
    UINT nEdge,
    UINT nFlags);

Параметры

lpRect
Указатель на RECT структуру, содержащую логические координаты прямоугольника.

nEdge
Указывает тип внутреннего и внешнего края для рисования. Этот параметр должен быть сочетанием одного флага внутренней границы и одного внешнего флага границы. Ознакомьтесь DrawEdge с пакетом SDK для Windows для таблицы типов параметров.

nFlags
Флаги, указывающие тип границы, нарисуемой. Ознакомьтесь DrawEdge с пакетом SDK для Windows для таблицы значений параметра. Для диагональных линий BF_RECT флаги указывают конечную точку вектора, ограничивающегося параметром прямоугольника.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

CDC::DrawEscape

Обращается к возможностям рисования видеотрансляции, которые не доступны напрямую через интерфейс графического устройства (GDI).

int DrawEscape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData);

Параметры

nEscape
Указывает выполняемую функцию escape-файла.

nInputSize
Указывает количество байтов данных, на которые указывает lpszInputData параметр.

lpszInputData
Указывает на входную структуру, необходимую для указанного escape-обхода.

Возвращаемое значение

Указывает результат функции. Больше нуля при успешном выполнении, за исключением QUERYESCSUPPORT escape-обхода рисования, который проверяет только реализацию; или ноль, если экран не реализован; или меньше нуля, если произошла ошибка.

Замечания

При вызове DrawEscapeприложения данные, идентифицированные nInputSize и lpszInputData передаются непосредственно указанному драйверу отображения.

CDC::DrawFocusRect

Рисует прямоугольник в стиле, используемом для указания того, что прямоугольник имеет фокус.

void DrawFocusRect(LPCRECT lpRect);

Параметры

lpRect
Указывает на RECT структуру или CRect объект, указывающий логические координаты прямоугольника, нарисованного.

Замечания

Так как это логическая функция XOR (^), вызывая эту функцию во второй раз с тем же прямоугольником, удаляет прямоугольник из дисплея. Прямоугольник, рисуемый этой функцией, не может быть прокручен. Чтобы прокрутить область, содержащую прямоугольник, нарисованный этой функцией, сначала вызовите DrawFocusRect удаление прямоугольника из дисплея, а затем прокрутите область, а затем снова вызовите DrawFocusRect , чтобы нарисовать прямоугольник в новой позиции.

Внимание

DrawFocusRect работает только в MM_TEXT режиме. В других режимах эта функция неправильно рисует прямоугольник фокуса, но не возвращает значения ошибок.

CDC::DrawFrameControl

Вызовите эту функцию-член, чтобы нарисовать элемент управления кадром указанного типа и стиля.

BOOL DrawFrameControl(
    LPRECT lpRect,
    UINT nType,
    UINT nState);

Параметры

lpRect
Указатель на RECT структуру, содержащую логические координаты прямоугольника.

nType
Указывает тип элемента управления кадром для рисования. См. uType параметр в DrawFrameControl пакете SDK для Windows для списка возможных значений этого параметра.

nState
Указывает начальное состояние элемента управления кадром. Может быть одним или несколькими значениями, описанными для uState параметра в DrawFrameControl пакете SDK для Windows. nState Используйте значение DFCS_ADJUSTRECT для настройки ограничивающего прямоугольника, чтобы исключить окружающий край кнопки.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

В нескольких случаях nState зависит от nType параметра. В следующем списке показана связь между четырьмя nType значениями и nState:

  • DFC_BUTTON

    • DFCS_BUTTON3STATE Кнопка "Три состояния"

    • DFCS_BUTTONCHECK Флажок

    • DFCS_BUTTONPUSH Кнопка

    • DFCS_BUTTONRADIO Переключатель

    • DFCS_BUTTONRADIOIMAGE Изображение для переключателя (несовершение требуется изображение)

    • DFCS_BUTTONRADIOMASK Маска для переключателя (некватр нуждается в маске)

  • DFC_CAPTION

    • DFCS_CAPTIONCLOSE Кнопка "Закрыть"

    • DFCS_CAPTIONHELP Кнопка справки

    • DFCS_CAPTIONMAX Кнопка "Развернуть"

    • DFCS_CAPTIONMIN Кнопка "Свернуть"

    • DFCS_CAPTIONRESTORE Кнопка "Восстановить"

  • DFC_MENU

    • DFCS_MENUARROW Стрелка подменю

    • DFCS_MENUBULLET Пуля

    • DFCS_MENUCHECK Флажок

  • DFC_SCROLL

    • DFCS_SCROLLCOMBOBOX Полоса прокрутки поля со списком

    • DFCS_SCROLLDOWN Стрелка вниз полосы прокрутки

    • DFCS_SCROLLLEFT Стрелка влево полосы прокрутки

    • DFCS_SCROLLRIGHT Стрелка вправо полосы прокрутки

    • DFCS_SCROLLSIZEGRIP Сцепление размера в правом нижнем углу окна

    • DFCS_SCROLLUP Стрелка вверх по полосе прокрутки

Пример

Этот код рисует захват размера в правом нижнем углу окна. Он подходит для OnPaint обработчика диалогового окна, который не имеет стилей и обычно не содержит другие элементы управления (например, строка состояния), которые могут дать ему захват размера.

void CDCView::DrawFC(CDC *pDC)
{
   CRect rc;
   GetClientRect(&rc);

   rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
   rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);

   pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}

CDC::DrawIcon

Рисует значок на устройстве, представленном текущим CDC объектом.

BOOL DrawIcon(
    int x,
    int y,
    HICON hIcon);

BOOL DrawIcon(
    POINT point,
    HICON hIcon);

Параметры

x
Задает логическую координату x левого верхнего угла значка.

y
Задает логическую координату y левого верхнего угла значка.

hIcon
Определяет дескриптор нарисованного значка.

point
Задает логические координаты x-и y верхнего левого угла значка. Вы можете передать структуру POINT CPoint или объект для этого параметра.

Возвращаемое значение

Ненулевое значение, если функция успешно завершена; в противном случае — 0.

Замечания

Функция помещает верхний левый угол значка в расположении, указанном x и y. Расположение зависит от текущего режима сопоставления контекста устройства.

Ресурс значка должен быть загружен ранее с помощью функций CWinApp::LoadIconили CWinApp::LoadStandardIconCWinApp::LoadOEMIcon. Перед MM_TEXT использованием этой функции необходимо выбрать режим сопоставления.

Пример

Пример см. в примере CWnd::IsIconic.

CDC::DrawState

Вызовите эту функцию-член, чтобы отобразить изображение и применить визуальный эффект, чтобы указать состояние, например отключенное или состояние по умолчанию.

Примечание.

Для всех nFlag состояний, кроме DSS_NORMALтого, изображение преобразуется в монохром перед применением визуального эффекта.

BOOL DrawState(
    CPoint pt,
    CSize size,
    HBITMAP hBitmap,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    CBitmap* pBitmap,
    UINT nFlags,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    HICON hIcon,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    HICON hIcon,
    UINT nFlags,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    LPCTSTR lpszText,
    UINT nFlags,
    BOOL bPrefixText = TRUE,
    int nTextLen = 0,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    LPCTSTR lpszText,
    UINT nFlags,
    BOOL bPrefixText = TRUE,
    int nTextLen = 0,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    DRAWSTATEPROC lpDrawProc,
    LPARAM lData,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    DRAWSTATEPROC lpDrawProc,
    LPARAM lData,
    UINT nFlags,
    CBrush* pBrush = NULL);

Параметры

pt
Указывает расположение изображения.

size
Указывает размер изображения.

hBitmap
Дескриптор растрового изображения.

nFlags
Флаги, указывающие тип изображения и состояние. Сведения о возможных типах и состояниях nFlags смDrawState. в пакете SDK для Windows.

hBrush
Дескриптор кисти.

pBitmap
Указатель на объект CBitmap.

pBrush
Указатель на объект CBrush.

hIcon
Дескриптор для значка.

lpszText
Указатель на текст.

bPrefixText
Текст, который может содержать ускоритель mnemonic. Параметр lData задает адрес строки, а nTextLen параметр задает длину. Если nTextLen значение равно 0, предполагается, что строка будет завершена null.

nTextLen
Длина текстовой строки, на которую указывает lpszText. Если nTextLen значение равно 0, предполагается, что строка будет завершена null.

lpDrawProc
Указатель на функцию обратного вызова, используемую для отрисовки изображения. Этот параметр требуется, если тип изображения указан nFlags DST_COMPLEX. Это необязательно и может быть NULL , если тип изображения имеет тип DST_TEXT. Для всех других типов изображений этот параметр игнорируется. Дополнительные сведения о функции обратного вызова см DrawStateProc . в пакете SDK для Windows.

lData
Указывает сведения о изображении. Значение этого параметра зависит от типа изображения.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

CDC::DrawText

Вызовите эту функцию-член для форматирования текста в заданном прямоугольнике. Чтобы указать дополнительные параметры форматирования, используйте CDC::DrawTextEx.

virtual int DrawText(
    LPCTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat);

int DrawText(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat);

Параметры

lpszString
Указывает на строку, которая должна быть нарисована. Если nCount значение равно -1, строка должна быть завершена со значением NULL.

nCount
Указывает количество символов в строке. Если nCount значение равно -1, предполагается, что длинный указатель на строку, завершаемую null, lpszString и DrawText вычисляет число символов автоматически.

lpRect
Указывает на RECT структуру или CRect объект, содержащий прямоугольник (в логических координатах), в котором текст должен быть отформатирован.

str
CString Объект, содержащий указанные символы для рисования.

nFormat
Задает метод форматирования текста. Это может быть любое сочетание значений, описанных для uFormat параметра в DrawText пакете SDK для Windows. (объединение с помощью битового оператора OR):

Примечание.

Некоторые uFormat сочетания флагов могут привести к изменению переданной строки. Использование DT_MODIFYSTRING с DT_END_ELLIPSIS любой или DT_PATH_ELLIPSIS может привести к изменению строки, вызывая утверждение в CString переопределении. Значения DT_CALCRECT, , DT_EXTERNALLEADINGDT_INTERNALи DT_NOCLIPDT_NOPREFIX не могут использоваться со значениемDT_TABSTOP.

Возвращаемое значение

Высота текста, если функция выполнена успешно.

Замечания

Он форматирует текст, расширяя вкладки в соответствующие пробелы, выравнивая текст слева, справа или в центре заданного прямоугольника, а также разбивая текст на строки, соответствующие заданному прямоугольнику. Тип форматирования указывается в параметре nFormat.

Эта функция-член использует выбранный шрифт контекста устройства, цвет текста и цвет фона для рисования текста. Если DT_NOCLIP формат не используется, вырезает текст таким образом, DrawText чтобы текст не отображался за пределами заданного прямоугольника. Предполагается, что все форматирование имеет несколько строк, если DT_SINGLELINE этот формат не задан.

Если выбранный шрифт слишком велик для указанного прямоугольника, DrawText функция-член не пытается заменить меньший шрифт.

DT_CALCRECT Если флаг указан, прямоугольник, указанный bylpRect, будет обновлен, чтобы отразить ширину и высоту, необходимую для рисования текста.

TA_UPDATECP Если флаг выравнивания текста установлен (см. смCDC::SetTextAlign.), DrawText отобразит текст, начиная с текущей позиции, а не слева от заданного прямоугольника. DrawText не будет упаковывать текст при TA_UPDATECP установке флага (т. е DT_WORDBREAK . флаг не будет иметь эффекта).

Цвет текста может быть задан.CDC::SetTextColor

CDC::DrawTextEx

Форматирует текст в заданном прямоугольнике.

virtual int DrawTextEx(
    LPTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

int DrawTextEx(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

Параметры

lpszString
Указывает на строку, которая должна быть нарисована. Если nCount значение равно -1, строка должна быть завершена null.

nCount
Указывает количество символов в строке. Если nCount значение равно -1, предполагается, что длинный указатель на строку, завершаемую null, lpszString и DrawText вычисляет число символов автоматически.

lpRect
Указывает на RECT структуру или CRect объект, содержащий прямоугольник (в логических координатах), в котором текст должен быть отформатирован.

str
CString Объект, содержащий указанные символы для рисования.

nFormat
Задает метод форматирования текста. Это может быть любое сочетание значений, описанных для uFormat параметра в DrawText пакете SDK для Windows. (Объединение с помощью битового побитового Оператор OR ):

Примечание.

Некоторые uFormat сочетания флагов могут привести к изменению переданной строки. Использование DT_MODIFYSTRING с DT_END_ELLIPSIS любой или DT_PATH_ELLIPSIS может привести к изменению строки, вызывая утверждение в CString переопределении. Значения DT_CALCRECT, , DT_EXTERNALLEADINGDT_INTERNALи DT_NOCLIPDT_NOPREFIX не могут использоваться со значениемDT_TABSTOP.

lpDTParams
Указатель на структуру DRAWTEXTPARAMS , указывающую дополнительные параметры форматирования. Этот параметр может иметь значение NULL.

Замечания

Он форматирует текст, расширяя вкладки в соответствующие пробелы, выравнивая текст слева, справа или в центре заданного прямоугольника, а также разбивая текст на строки, соответствующие заданному прямоугольнику. Тип форматирования определяется nFormat и lpDTParams. Дополнительные сведения см CDC::DrawText . и DrawTextEx в пакете SDK для Windows.

Цвет текста может быть задан.CDC::SetTextColor

CDC::Ellipse

Рисование эллипса.

BOOL Ellipse(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Ellipse(LPCRECT lpRect);

Параметры

x1
Задает логическую координату x левого верхнего угла ограничивающего прямоугольника эллипса.

y1
Задает логическую координату y левого верхнего угла ограничивающего прямоугольника эллипса.

x2
Задает логическую координату x правого нижнего угла ограничивающего прямоугольника эллипса.

y2
Задает логическую координату y правого нижнего угла ограничивающего прямоугольника эллипса.

lpRect
Задает ограничивающий прямоугольник многоточия. Вы также можете передать CRect объект для этого параметра.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Центр многоточия является центром ограничивающего прямоугольника, указанного x1в , x2y1и , или y2lpRect. Многоточие рисуется с текущим пером, и его интерьер заполняется текущей кистью.

Рисунок, нарисованный этой функцией, расширяется до, но не включает, правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1

Если ширина или высота ограничивающего прямоугольника равна 0, многоточие не рисуется.

CDC::EndDoc

Завершает задание печати, запущенное вызовом StartDoc функции-члена.

int EndDoc();

Возвращаемое значение

Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.

Замечания

Эта функция-член заменяет ENDDOC escape-файл принтера и должен вызываться сразу после завершения успешного задания печати.

Если приложение сталкивается с ошибкой печати или отмененной операцией печати, она не должна пытаться завершить операцию с помощью либо EndDoc AbortDoc. GDI автоматически завершает операцию перед возвратом значения ошибки.

Эта функция не должна использоваться внутри метафайлов.

Пример

Пример см. в примере CDC::StartDoc.

CDC::EndPage

Сообщает устройству, что приложение завершило запись на страницу.

int EndPage();

Возвращаемое значение

Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.

Замечания

Эта функция-член обычно используется для перенаправления драйвера устройства на новую страницу.

Эта функция-член заменяет NEWFRAME экран-экран принтера. В отличие от NEWFRAMEэтого, эта функция всегда вызывается после печати страницы.

Пример

Пример см. в примере CDC::StartDoc.

CDC::EndPath

Закрывает скобку пути и выбирает путь, определенный скобкой в контексте устройства.

BOOL EndPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Пример

Пример см. в примере CDC::BeginPath.

CDC::EnumObjects

Перечисляет ручки и кисти, доступные в контексте устройства.

int EnumObjects(
    int nObjectType,
    int (CALLBACK* lpfn)(
    LPVOID,
    LPARAM),
    LPARAM lpData);

Параметры

nObjectType
Указывает тип объекта. Он может иметь значения OBJ_BRUSH или OBJ_PEN.

lpfn
Адрес экземпляра процедуры для функции обратного вызова, предоставленной приложением. См. раздел "Примечания" ниже.

lpData
Указывает на предоставленные приложением данные. Данные передаются функции обратного вызова вместе с информацией об объекте.

Возвращаемое значение

Указывает последнее значение, возвращаемое функцией обратного вызова. Его значение определяется пользователем.

Замечания

Для каждого объекта заданного типа функция обратного вызова, передаваемая вами, вызывается с информацией для этого объекта. Система вызывает функцию обратного вызова, пока не будет больше объектов или функция обратного вызова возвращает значение 0.

Новые функции Microsoft Visual C++ позволяют использовать обычную функцию в качестве функции, переданной в EnumObjects. Переданный адрес EnumObjects является указателем на функцию, экспортированную с EXPORT помощью соглашения о вызовах Pascal. В приложениях в защищенном режиме не нужно создавать эту функцию с помощью функции Windows MakeProcInstance или освобождать функцию после использования с FreeProcInstance функцией Windows.

Кроме того, вам не нужно экспортировать имя функции в инструкции EXPORTS в файле определения модуля приложения. Вместо этого можно использовать EXPORT модификатор функции, как и в

int CALLBACK EXPORT AFunction (LPSTR, LPSTR);

Чтобы компилятор выдает правильную запись экспорта для экспорта по имени без псевдонима. Это работает для большинства потребностей. Для некоторых особых случаев, таких как экспорт функции путем порядкового или псевдонима экспорта, вам по-прежнему необходимо использовать EXPORTS инструкцию в файле определения модуля.

Для компиляции программ Microsoft Foundation обычно используются /GA параметры компилятора./GEs Параметр /Gw компилятора не используется с классами Microsoft Foundation. (Если вы используете функцию Windows, необходимо явно привести указатель возвращаемой функции MakeProcInstanceк FARPROC типу, необходимому в этом API.) Интерфейсы регистрации обратного вызова теперь являются типобезопасны (необходимо передать указатель функции, указывающий на правильную функцию для конкретного обратного вызова).

Кроме того, все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".

Пример

// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
   LOGPEN *pPen = (LOGPEN *)lpLogObject;

   switch (pPen->lopnStyle)
   {
   case PS_SOLID:
      TRACE0("PS_SOLID:      ");
      break;
   case PS_DASH:
      TRACE0("PS_DASH:       ");
      break;
   case PS_DOT:
      TRACE0("PS_DOT:        ");
      break;
   case PS_DASHDOT:
      TRACE0("PS_DASHDOT:    ");
      break;
   case PS_DASHDOTDOT:
      TRACE0("PS_DASHDOTDOT: ");
      break;
   case PS_NULL:
      TRACE0("PS_NULL:       ");
      break;
   case PS_INSIDEFRAME:
      TRACE0("PS_INSIDEFRAME:");
      break;
   default:
      TRACE0("unk style:");
   }

   TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
   return TRUE;
}

// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
   CPrintDialog dlg(FALSE);
   dlg.GetDefaults();
   HDC hdc = dlg.GetPrinterDC();

   if (hdc != NULL)
   {
      CDC dc;
      dc.Attach(hdc);
      VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
   }
}

CDC::Escape

Эта функция-член практически устарела для программирования Win32.

virtual int Escape(
    int nEscape,
    int nCount,
    LPCSTR lpszInData,
    LPVOID lpOutData);

int Escape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData,
    int nOutputSize,
    LPSTR lpszOutputData);

Параметры

nEscape
Указывает выполняемую функцию escape-файла.

Полный список escape-функций см Escape . в пакете SDK для Windows.

nCount
Указывает количество байтов данных, на которые указывает lpszInData.

lpszInData
Указывает на структуру входных данных, необходимую для этого escape-обхода.

lpOutData
Указывает на структуру, которая получает выходные данные из этого escape-файла. Если lpOutData данные не возвращаются, параметр NULL не возвращается.

nInputSize
Указывает количество байтов данных, на которые указывает lpszInputData параметр.

lpszInputData
Указывает на входную структуру, необходимую для указанного escape-обхода.

nOutputSize
Указывает количество байтов данных, на которые указывает lpszOutputData параметр.

lpszOutputData
Указывает на структуру, которая получает выходные данные из этого escape-файла. Этот параметр должен быть NULL , если данные не возвращаются.

Возвращаемое значение

Положительное значение возвращается, если функция выполнена успешно, за исключением QUERYESCSUPPORT escape-файла, который проверяет только реализацию. Ноль возвращается, если escape-файл не реализован. Отрицательное значение возвращается, если произошла ошибка. Ниже приведены распространенные значения ошибок:

  • SP_ERROR Общая ошибка.

  • SP_OUTOFDISK Недостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.

  • SP_OUTOFMEMORY Недостаточно памяти доступно для spooling.

  • SP_USERABORT Пользователь завершил задание с помощью диспетчера печати.

Замечания

Из исходных экранов принтера поддерживается только QUERYESCSUPPORT для приложений Win32. Все остальные экраны принтера устарели и поддерживаются только для совместимости с 16-разрядными приложениями.

Для программирования Win32 теперь предоставляются шесть функций-членов, CDC заменяющих соответствующие экраны принтера:

Кроме того, CDC::GetDeviceCaps поддерживает индексы Win32, заменяющие экраны других принтеров. Дополнительные сведения см GetDeviceCaps . в пакете SDK для Windows.

Эта функция-член позволяет приложениям получать доступ к объектам определенного устройства, которое не доступно напрямую через GDI.

Используйте первую версию, если приложение использует предопределенные escape-значения. Используйте вторую версию, если приложение определяет частные escape-значения. Дополнительные сведения о второй версии см ExtEscape . в пакете SDK для Windows.

CDC::ExcludeClipRect

Создает новый регион вырезки, состоящий из существующей области вырезки минус указанный прямоугольник.

int ExcludeClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int ExcludeClipRect(LPCRECT lpRect);

Параметры

x1
Задает логическую координату x левого верхнего угла прямоугольника.

y1
Задает логическую координату Y верхнего левого угла прямоугольника.

x2
Задает логическую координату x правого нижнего угла прямоугольника.

y2
Задает логическую координату y правого нижнего угла прямоугольника.

lpRect
Задает прямоугольник. Может также быть CRect объектом.

Возвращаемое значение

Указывает тип нового региона вырезки. В качестве такой точки может выступать любой из следующих вариантов:

  • COMPLEXREGION Регион имеет перекрывающиеся границы.

  • ERROR Не было создано ни одного региона.

  • NULLREGION Регион пуст.

  • SIMPLEREGION Регион не имеет перекрывающихся границ.

Замечания

Ширина прямоугольника, указанная абсолютным значением x2 - x1, не должна превышать 32 767 единиц. Это ограничение также применяется к высоте прямоугольника.

CDC::ExcludeUpdateRgn

Запрещает рисование в недопустимых областях окна, исключая обновленный регион в окне из области вырезки, связанной CDC с объектом.

int ExcludeUpdateRgn(CWnd* pWnd);

Параметры

pWnd
Указывает на объект окна, окно которого обновляется.

Возвращаемое значение

Тип исключенного региона. Это может быть любое из следующих значений:

  • COMPLEXREGION Регион имеет перекрывающиеся границы.

  • ERROR Не было создано ни одного региона.

  • NULLREGION Регион пуст.

  • SIMPLEREGION Регион не имеет перекрывающихся границ.

CDC::ExtFloodFill

Заполняет область поверхности отображения текущей кистью.

BOOL ExtFloodFill(
    int x,
    int y,
    COLORREF crColor,
    UINT nFillType);

Параметры

x
Задает логическую координату x точки, в которой начинается заполнение.

y
Указывает логическую координату y точки, в которой начинается заполнение.

crColor
Задает цвет границы или области, заполняемой. Интерпретация crColor зависит от значения nFillType.

nFillType
Указывает тип выполняемой заливки наводнения. Это должно быть одно из следующих значений:

  • FLOODFILLBORDERОбласть заливки ограничивается цветом, заданным.crColor Этот стиль идентичен заполнению, выполняемой FloodFill.

  • FLOODFILLSURFACEОбласть заливки определяется цветом, заданным.crColor Заполнение продолжается во всех направлениях до тех пор, пока встречается цвет. Этот стиль полезен для заполнения областей с многоцветными границами.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; В противном случае значение 0, если заполнение не удалось завершить, если заданная точка имеет цвет границы, заданный crColor (если FLOODFILLBORDER запрашивался), если заданная точка не имеет цвета, указанного crColor (если FLOODFILLSURFACE запросили), или если точка находится за пределами области вырезки.

Замечания

Эта функция-член обеспечивает большую гибкость, чем FloodFill из-за того, что можно указать тип nFillTypeзаполнения.

Если nFillType задано значение FLOODFILLBORDER, то предполагается, что область полностью ограничена цветом, указанным в параметре crColor. Функция начинается с точки, указанной x y и заполняет все направления границы цвета.

Если nFillType задано значение FLOODFILLSURFACE, функция начинается в точке, указанной x и y продолжается во всех направлениях, заполняя все смежные области, содержащие цвет, указанный в параметре crColor.

Поддерживаются только контексты и устройства памяти, поддерживающие технологию ExtFloodFillрастрового отображения. Дополнительные сведения см. в функции-члене GetDeviceCaps .

CDC::ExtTextOut

Вызовите эту функцию-член, чтобы написать символьную строку в прямоугольной области с помощью выбранного в данный момент шрифта.

virtual BOOL ExtTextOut(
    int x,
    int y,
    UINT nOptions,
    LPCRECT lpRect,
    LPCTSTR lpszString,
    UINT nCount,
    LPINT lpDxWidths);

BOOL ExtTextOut(
    int x,
    int y,
    UINT nOptions,
    LPCRECT lpRect,
    const CString& str,
    LPINT lpDxWidths);

Параметры

x
Задает логическую координату x ячейки символа для первого символа в указанной строке.

y
Задает логическую координату y верхней части ячейки символа для первого символа в указанной строке.

nOptions
Указывает тип прямоугольника. Этот параметр может быть одним или ни одним из следующих значений:

  • ETO_CLIPPED Указывает, что текст обрезается к прямоугольнику.

  • ETO_OPAQUE Указывает, что текущий цвет фона заполняет прямоугольник. (Вы можете задать и запросить текущий цвет фона SetBkColor с помощью функций-членов. GetBkColor )

lpRect
Указывает на RECT структуру, которая определяет размеры прямоугольника. Этот параметр может иметь значение NULL. Вы также можете передать CRect объект для этого параметра.

lpszString
Указывает на указанную строку символов, которая должна быть нарисована. Вы также можете передать CString объект для этого параметра.

nCount
Указывает количество знаков в строке.

lpDxWidths
Указывает на массив значений, указывающий расстояние между источниками смежных ячеек символов. Например, lpDxWidthsлогические единицы [ i] будут отделять источники символьной ячейки i и ячейки i символов + 1. В противном lpDxWidths случае ExtTextOut NULLиспользуется интервал по умолчанию между символами.

str
CString Объект, содержащий указанные символы для рисования.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Прямоугольная область может быть непрозрачной (заполненной текущим цветом фона), и это может быть область вырезки.

Если nOptions значение равно 0 и lpRect имеет значение NULL, функция записывает текст в контекст устройства без использования прямоугольной области. По умолчанию текущая позиция не используется или обновляется функцией. Если приложению необходимо обновить текущую позицию при вызове ExtTextOut, приложение может вызвать CDC функцию-член SetTextAlign с заданным nFlags значением TA_UPDATECP. Если этот флаг задан, Windows игнорирует x и y при последующих вызовах ExtTextOut и использует текущую позицию. Если приложение используется TA_UPDATECP для обновления текущей позиции, ExtTextOut задает текущую позицию в конце предыдущей строки текста или положение, указанное последним элементом массива, на который указывает lpDxWidthsзначение , на которое больше.

CDC::FillPath

Закрывает все открытые фигуры в текущем пути и заполняет интерьер пути с помощью текущего режима заполнения кисти и многоугольника.

BOOL FillPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

После заполнения внутренних элементов путь удаляется из контекста устройства.

CDC::FillRect

Вызовите эту функцию-член, чтобы заполнить заданный прямоугольник с помощью указанной кисти.

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

Параметры

lpRect
Указывает на RECT структуру, содержащую логические координаты прямоугольника, который должен быть заполнен. Вы также можете передать CRect объект для этого параметра.

pBrush
Определяет кисть, используемую для заполнения прямоугольника.

Замечания

Функция заполняет полный прямоугольник, включая левые и верхние границы, но не заполняет правые и нижние границы.

Кисть должна быть создана с помощью CBrush функций-членов CreateHatchBrush, CreatePatternBrushа CreateSolidBrushтакже или извлекается функцией GetStockObject Windows.

При заполнении указанного прямоугольника не включает правые и нижние стороны прямоугольника FillRect . GDI заполняет прямоугольник до, но не включает в себя правый столбец и нижнюю строку независимо от текущего режима сопоставления. FillRectсравнивает значения top, bottomleftи right члены указанного прямоугольника. Если bottom значение меньше или topравно, или right если меньше или равно left, прямоугольник не рисуется.

FillRect похоже CDC::FillSolidRectна ; однако принимает кисть и, следовательно, FillRect можно использовать для заполнения прямоугольника сплошным цветом, дитерированных кистей или шаблона. FillSolidRect использует только сплошные цвета (указанные параметром COLORREF ). FillRect обычно медленнее FillSolidRect.

CDC::FillRgn

Заполняет область, указанную pRgn кистью, указанной в параметре pBrush.

BOOL FillRgn(
    CRgn* pRgn,
    CBrush* pBrush);

Параметры

pRgn
Указатель на регион, который нужно заполнить. Координаты для заданного региона указываются в логических единицах.

pBrush
Определяет кисть, используемую для заполнения региона.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Кисть должна быть создана с помощью CBrush функций-членовCreateHatchBrush, CreateSolidBrushCreatePatternBrushили извлекатьсяGetStockObject.

Пример

Пример см. в примере CRgn::CreateRoundRectRgn.

CDC::FillSolidRect

Вызовите эту функцию-член, чтобы заполнить заданный прямоугольник указанным сплошным цветом.

void FillSolidRect(
    LPCRECT lpRect,
    COLORREF clr);

void FillSolidRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clr);

Параметры

lpRect
Указывает ограничивающий прямоугольник (в логических единицах). Можно передать указатель на RECT структуру данных или CRect объект для этого параметра.

clr Указывает цвет, используемый для заполнения прямоугольника.

x
Задает логическую координату x левого верхнего угла прямоугольника.

y
Задает логическую координату y верхнего левого угла прямоугольника назначения.

cx
Задает ширину прямоугольника.

cy
Задает высоту прямоугольника.

Замечания

FillSolidRectочень похож на ; однако использует только сплошные цвета (указанные COLORREF параметром), в то время FillRect как CDC::FillRectпринимает кисть и, следовательно, FillSolidRect можно использовать для заполнения прямоугольника сплошным цветом, дитерированного цвета, хэтчированных кистей или шаблона. FillSolidRect обычно быстрее, чем FillRect.

Примечание.

При вызове FillSolidRectцвет фона, который был установлен ранее с помощью SetBkColor, задается для цвета, указанного clr.

CDC::FlattenPath

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

BOOL FlattenPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

CDC::FloodFill

Заполняет область поверхности отображения текущей кистью.

BOOL FloodFill(
    int x,
    int y,
    COLORREF crColor);

Параметры

x
Задает логическую координату x точки, в которой начинается заполнение.

y
Указывает логическую координату y точки, в которой начинается заполнение.

crColor
Задает цвет границы.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае возвращается значение 0, если заполнение не удалось завершить, данный пункт имеет цвет границы, указанный crColorпараметром, или точка находится за пределами области вырезки.

Замечания

Предполагается, что область ограничена, как указано в параметре crColor. Функция FloodFill начинается в точке, указанной x и y продолжается во всех направлениях к цветовой границе.

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

Функция ExtFloodFill обеспечивает аналогичную возможность, но большую гибкость.

CDC::FrameRect

Рисует границу вокруг прямоугольника, указанного lpRectв .

void FrameRect(
    LPCRECT lpRect,
    CBrush* pBrush);

Параметры

lpRect
Указывает на RECT структуру или CRect объект, содержащий логические координаты левого и нижнего углов прямоугольника. Вы также можете передать CRect объект для этого параметра.

pBrush
Определяет кисть, используемую для обрамления прямоугольника.

Замечания

Функция использует заданную кисть для рисования границы. Ширина и высота границы всегда составляет 1 логическая единица.

Если координата прямоугольника bottom меньше или равна top, или right если меньше или равно left, прямоугольник не рисуется.

Граница, рисуемая FrameRect по краю, находится в той же позиции, что и граница, рисуемая Rectangle функцией-членом, используя те же координаты (если Rectangle используется перо, равное 1 логическому блоку). Интерьер прямоугольника не заполняется FrameRect.

CDC::FrameRgn

Рисует границу вокруг области, указанной с помощью кисти, указанной pRgn в параметре pBrush.

BOOL FrameRgn(
    CRgn* pRgn,
    CBrush* pBrush,
    int nWidth,
    int nHeight);

Параметры

pRgn
Указывает на объект, определяющий CRgn регион, который должен быть заключен в границу. Координаты для заданного региона указываются в логических единицах.

pBrush
Указывает на объект, определяющий CBrush кисть, используемую для рисования границы.

nWidth
Задает ширину границы в вертикальных штрихах кисти в единицах устройства.

nHeight
Задает высоту границы в горизонтальных штрихах кисти в единицах устройства.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Пример

Пример см. в примере CRgn::CombineRgn.

CDC::FromHandle

Возвращает указатель на CDC объект при указании дескриптора контекста устройства.

static CDC* PASCAL FromHandle(HDC hDC);

Параметры

hDC
Содержит дескриптор контекста устройства Windows.

Возвращаемое значение

Указатель может быть временным и не должен храниться за пределами немедленного использования.

Замечания

CDC Если объект не присоединен к дескриптору, создается и присоединяется временный CDC объект.

Пример

Пример см. в примере CPrintDialog::GetPrinterDC.

CDC::GetArcDirection

Возвращает текущее направление дуги для контекста устройства.

int GetArcDirection() const;

Возвращаемое значение

Указывает текущее направление дуги, если выполнено успешно. Ниже приведены допустимые возвращаемые значения:

  • AD_COUNTERCLOCKWISE Дуги и прямоугольники, нарисованные счетчиком со стрелкой.

  • AD_CLOCKWISE Arcs и прямоугольники, нарисованные по часовой стрелке.

Если возникает ошибка, возвращаемое значение равно нулю.

Замечания

Функции Arc и прямоугольника используют направление дуги.

CDC::GetAspectRatioFilter

Извлекает параметр для текущего фильтра пропорций.

CSize GetAspectRatioFilter() const;

Возвращаемое значение

CSize Объект, представляющий пропорции, используемый текущим фильтром пропорций.

Замечания

Пропорции — это соотношение, сформированное шириной и высотой пикселя устройства. Сведения о пропорции устройства используются в создании, выборе и отображении шрифтов. Windows предоставляет специальный фильтр, фильтр пропорций для выбора шрифтов, предназначенных для определенного пропорции из всех доступных шрифтов. Фильтр использует пропорции, заданные SetMapperFlags функцией-членом.

CDC::GetBkColor

Возвращает текущий цвет фона.

COLORREF GetBkColor() const;

Возвращаемое значение

Значение цвета RGB.

Замечания

Если фоновый режим имеет значение OPAQUE, система использует цвет фона для заполнения пробелов в стилях, пробелов между штриховками в кисти и фоном в ячейках символов. Система также использует цвет фона при преобразовании растровых изображений между контекстами цветов и монохромных устройств.

CDC::GetBkMode

Возвращает фоновый режим.

int GetBkMode() const;

Возвращаемое значение

Текущий фоновый режим, который может быть OPAQUE или TRANSPARENT.

Замечания

В фоновом режиме определяется, удаляет ли система существующие цвета фона на поверхности рисования перед рисованием текста, штриховками или любым стилем пера, который не является сплошной линией.

CDC::GetBoundsRect

Возвращает текущий накопленный ограничивающий прямоугольник для указанного контекста устройства.

UINT GetBoundsRect(
    LPRECT lpRectBounds,
    UINT flags);

Параметры

lpRectBounds
Указывает на буфер, который получит текущий ограничивающий прямоугольник. Прямоугольник возвращается в логических координатах.

flags
Указывает, следует ли очистить ограничивающий прямоугольник после возврата. Этот параметр должен быть равен нулю или иметь следующее значение:

  • DCB_RESET Принудительно очищает ограничивающий прямоугольник после возвращения.

Возвращаемое значение

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

  • DCB_ACCUMULATE Происходит ограничивающее накопление прямоугольника.

  • DCB_RESET Ограничивающий прямоугольник пуст.

  • DCB_SET Ограничивающий прямоугольник не пуст.

  • DCB_ENABLE Ограничивающее накопление включено.

  • DCB_DISABLE Ограничивающее накопление отключено.

CDC::GetBrushOrg

Извлекает источник (в единицах устройства) кисти, выбранной в настоящее время для контекста устройства.

CPoint GetBrushOrg() const;

Возвращаемое значение

Текущий источник кисти (в единицах устройства) в качестве CPoint объекта.

Замечания

Исходный источник кисти составляет (0,0) клиентской области. Возвращаемое значение указывает эту точку в единицах устройства относительно источника окна рабочего стола.

CDC::GetCharacterPlacement

Извлекает различные типы сведений о строке символов.

DWORD GetCharacterPlacement(
    LPCTSTR lpString,
    int nCount,
    int nMaxExtent,
    LPGCP_RESULTS lpResults,
    DWORD dwFlags) const;

DWORD GetCharacterPlacement(
    CString& str,
    int nMaxExtent,
    LPGCP_RESULTS lpResults,
    DWORD dwFlags) const;

Параметры

lpString
Указатель на строку символа для обработки.

nCount
Указывает длину строки. Для версии ANSI это BYTE число и для функции Юникода это WORD число. Дополнительные сведения см. в разделе GetCharacterPlacement.

nMaxExtent
Указывает максимальную степень (в логических единицах), в которой обрабатывается строка. Символы, которые при обработке превышают эту степень, игнорируются. Вычисления для любых обязательных массивов упорядочивания или глифа применяются только к включенным символам. Этот параметр используется только в том случае, если GCP_MAXEXTENT значение указано в параметре dwFlags . Поскольку функция обрабатывает входную строку, каждый символ и его экстент добавляются в выходные данные, экстенты и другие массивы только в том случае, если общая степень еще не превысила максимальное значение. После достижения предела обработка остановится.

lpResults
Указатель на GCP_Results структуру, которая получает результаты функции.

dwFlags
Указывает, как обработать строку в необходимые массивы. Этот параметр может быть одним или несколькими значениями, перечисленными в dwFlags разделе раздела GetCharacterPlacement раздела.

str
Указатель на CString объект для обработки.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение равно ширине и высоте строки в логических единицах.

Если функция выполняется неудачно, возвращается нулевое значение.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetCharacterPlacement, как описано в пакете SDK для Windows.

CDC::GetCharABCWidths

Извлекает ширину последовательных символов в указанном диапазоне из текущего шрифта TrueType.

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABC lpabc) const;

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABCFLOAT lpABCF) const;

Параметры

nFirstChar
Задает первый символ в диапазоне символов из текущего шрифта, для которого возвращаются ширины символов.

nLastChar
Задает последний символ в диапазоне символов из текущего шрифта, для которого возвращаются ширины символов.

lpabc
Указывает на массив структур, получающих ширину символов ABC при возврате функции. Этот массив должен содержать по крайней мере столько ABC структур, сколько символов в диапазоне, заданном nFirstChar и nLastChar параметрами.

lpABCF
Указывает на буфер, предоставленный приложением, массив структур для получения ширины символов ABCFLOAT при возврате функции. Ширины, возвращаемые этой функцией, находятся в формате с плавающей запятой IEEE.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Ширина возвращается в логических единицах. Эта функция успешно выполняется только с шрифтами TrueType.

Расстеризатор TrueType предоставляет интервал между символами ABC после выбора определенного размера точки. Интервал "A" — это расстояние, которое добавляется в текущее положение перед размещением глифа. Интервал "B" — это ширина черной части глифа. Интервал "C" добавляется в текущее положение, чтобы учесть пробел справа от глифа. Общая расширенная ширина присваивается A + B + C.

GetCharABCWidths Когда функция-член получает отрицательные ширины "A" или "C" для символа, этот символ включает подвесы или навесы.

Чтобы преобразовать ширину ABC в единицы конструктора шрифтов, приложение должно создать шрифт, высота которого (как указано в lfHeight элементе LOGFONT структуры) равна значению, хранящейся в ntmSizeEM элементе NEWTEXTMETRIC структуры. (Значение ntmSizeEM элемента можно получить, вызвав EnumFontFamilies функцию Windows.)

Ширина ABC символа по умолчанию используется для символов, которые находятся за пределами диапазона выбранного шрифта.

Чтобы получить ширину символов в шрифтах, отличных от TrueType, приложения должны использовать функцию GetCharWidth Windows.

CDC::GetCharABCWidthsI

Извлекает ширину в логических единицах последовательных индексов глифов в указанном диапазоне от текущего шрифта TrueType.

BOOL GetCharABCWidthsI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPABC lpabc) const;

Параметры

giFirst
Задает первый глифовый индекс в группе последовательных индексов глифов из текущего шрифта. Этот параметр используется только в том случае, если pgi параметр имеет значение NULL.

cgi
Указывает количество глифовых индексов.

pgi
Указатель на массив, содержащий индексы глифов. Если значение равно NULL, giFirst вместо этого используется параметр. Параметр cgi задает количество индексов глифов в этом массиве.

lpabc
Указатель на массив структур, получающих ABC ширину символов. Этот массив должен содержать по крайней мере столько ABC структур, сколько имеются индексы глифов, указанные параметром cgi .

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetCharABCWidthsI, как описано в пакете SDK для Windows.

CDC::GetCharWidth

Извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта, используя m_hAttribDCконтекст входного устройства.

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    float* lpFloatBuffer) const;

Параметры

nFirstChar
Задает первый символ в последовательной группе символов в текущем шрифте.

nLastChar
Задает последний символ в последовательной группе символов в текущем шрифте.

lpBuffer
Указывает на буфер, который получит значения ширины для последовательной группы символов в текущем шрифте.

lpFloatBuffer
Указывает на буфер для получения ширины символов. Возвращаемые ширины находятся в 32-разрядном формате с плавающей запятой IEEE. (Ширина измеряется вдоль базовой линии символов.)

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Например, если nFirstChar идентифицирует букву "a" и nLastChar идентифицирует букву "z", функция извлекает ширину всех строчных символов.

Функция сохраняет значения в буфере, на который указывает lpBuffer. Этот буфер должен быть достаточно большим, чтобы сохранить все ширины. То есть в приведенном примере должно быть не менее 26 записей.

Если символ в последовательной группе символов не существует в определенном шрифте, оно будет назначено значение ширины символа по умолчанию.

CDC::GetCharWidthI

Извлекает ширину в логических координатах последовательных индексов глифов в указанном диапазоне от текущего шрифта.

BOOL GetCharWidthI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPINT lpBuffer) const;

Параметры

giFirst
Задает первый глифовый индекс в группе последовательных индексов глифов из текущего шрифта. Этот параметр используется только в том случае, если pgi параметр имеет значение NULL.

cgi
Указывает количество глифовых индексов.

pgi
Указатель на массив, содержащий индексы глифов. Если значение равно NULL, giFirst вместо этого используется параметр. Параметр cgi задает количество индексов глифов в этом массиве.

lpBuffer
Указатель на буфер, получающий ширину.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetCharWidthI, как описано в пакете SDK для Windows.

CDC::GetClipBox

Извлекает размеры жестко ограничивающего прямоугольника вокруг текущей границы обрезки.

virtual int GetClipBox(LPRECT lpRect) const;

Параметры

lpRect
Указывает на RECT структуру или CRect объект, который требуется получить размеры прямоугольника.

Возвращаемое значение

Тип обрезки региона. В качестве такой точки может выступать любой из следующих вариантов:

  • COMPLEXREGION Область вырезки имеет перекрывающиеся границы.

  • ERROR Недопустимый контекст устройства.

  • NULLREGION Область вырезки пуста.

  • SIMPLEREGION Область вырезки не имеет перекрывающихся границ.

Замечания

Измерения копируются в буфер, на который указывает lpRect.

CDC::GetColorAdjustment

Извлекает значения корректировки цвета для контекста устройства.

BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;

Параметры

lpColorAdjust
Указывает на структуру данных для получения значений COLORADJUSTMENT корректировки цвета.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

CDC::GetCurrentBitmap

Возвращает указатель на текущий выбранный CBitmap объект.

CBitmap* GetCurrentBitmap() const;

Возвращаемое значение

Указатель на CBitmap объект, если выполнен успешно; в противном случае NULL.

Замечания

Эта функция-член может возвращать временные объекты.

CDC::GetCurrentBrush

Возвращает указатель на текущий выбранный CBrush объект.

CBrush* GetCurrentBrush() const;

Возвращаемое значение

Указатель на CBrush объект, если выполнен успешно; в противном случае NULL.

Замечания

Эта функция-член может возвращать временные объекты.

CDC::GetCurrentFont

Возвращает указатель на текущий выбранный CFont объект.

CFont* GetCurrentFont() const;

Возвращаемое значение

Указатель на CFont объект, если выполнен успешно; в противном случае NULL.

Замечания

Эта функция-член может возвращать временные объекты.

CDC::GetCurrentPalette

Возвращает указатель на текущий выбранный CPalette объект.

CPalette* GetCurrentPalette() const;

Возвращаемое значение

Указатель на CPalette объект, если выполнен успешно; в противном случае NULL.

Замечания

Эта функция-член может возвращать временные объекты.

CDC::GetCurrentPen

Возвращает указатель на текущий выбранный CPen объект.

CPen* GetCurrentPen() const;

Возвращаемое значение

Указатель на CPen объект, если выполнен успешно; в противном случае NULL.

Замечания

Эта функция-член может возвращать временные объекты.

CDC::GetCurrentPosition

Извлекает текущую позицию (в логических координатах).

CPoint GetCurrentPosition() const;

Возвращаемое значение

Текущая позиция в качестве CPoint объекта.

Замечания

Текущая позиция может быть задана MoveTo с помощью функции-члена.

CDC::GetDCBrushColor

Получает текущий цвет кисти.

COLORREF GetDCBrushColor() const;

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение является COLORREF значением текущего цвета кисти.

Если функция завершается ошибкой, возвращается CLR_INVALIDзначение.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetDCBrushColor, как описано в пакете SDK для Windows.

CDC::GetDCPenColor

Получает текущий цвет пера.

COLORREF GetDCPenColor() const;

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение является COLORREF значением текущего цвета пера.

Если функция завершается ошибкой, возвращается CLR_INVALIDзначение.

Замечания

Эта функция-член использует функцию GetDCPenColorWin32, как описано в пакете SDK для Windows.

CDC::GetDeviceCaps

Извлекает широкий спектр сведений об устройстве с отображением.

int GetDeviceCaps(int nIndex) const;

Параметры

nIndex
Указывает тип возвращаемой информации. Ознакомьтесь GetDeviceCaps со списком значений в пакете SDK для Windows.

Возвращаемое значение

Значение запрошенной возможности, если функция выполнена успешно.

Пример

Пример см. в примере CPrintDialog::GetDefaults.

CDC::GetFontData

Извлекает данные метрик шрифта из масштабируемого файла шрифта.

DWORD GetFontData(
    DWORD dwTable,
    DWORD dwOffset,
    LPVOID lpData,
    DWORD cbData) const;

Параметры

dwTable
Указывает имя возвращаемой таблицы метрик. Этот параметр может быть одним из таблиц метрик, описанных в спецификации TrueType Font Files, опубликованной корпорацией Майкрософт. Если этот параметр равен 0, данные извлекаются начиная с начала файла шрифта.

dwOffset
Указывает смещение от начала таблицы, с которой начинается получение сведений. Если этот параметр равен 0, данные извлекаются начиная с начала таблицы, указанной параметром dwTable . Если это значение больше или равно размеру таблицы, GetFontData возвращается значение 0.

lpData
Указывает на буфер, который получит сведения о шрифте. Если это значение, NULLфункция возвращает размер буфера, необходимый для данных шрифта, указанных в параметре dwTable .

cbData
Указывает длину в байтах извлекаемой информации. Если этот параметр равен 0, возвращает размер данных, GetFontData указанных в параметре dwTable .

Возвращаемое значение

Указывает количество байтов, возвращаемых в буфере, на которое указывает lpData , если функция выполнена успешно; в противном случае — значение -1.

Замечания

Извлекаемая информация определяется путем указания смещения в файл шрифта и длины возвращаемой информации.

Иногда приложение может использовать функцию-член для GetFontData сохранения шрифта TrueType с документом. Для этого приложение определяет, можно ли внедрить шрифт, а затем получить весь файл шрифта, указав значение 0 для dwTableпараметра dwOffsetи cbData параметров.

Приложения могут определить, можно ли внедрить шрифт, проверив otmfsType элемент OUTLINETEXTMETRIC структуры. Если задано значение 1 otmfsType бита, внедрение не допускается для шрифта. Если бит 1 ясно, шрифт может быть внедрен. Если задан бит 2, внедрение выполняется только для чтения.

Если приложение пытается использовать эту функцию для получения сведений для шрифта, отличного от TrueType, GetFontData функция-член возвращает -1.

CDC::GetFontLanguageInfo

Возвращает сведения о выбранном шрифте для указанного контекста отображения.

DWORD GetFontLanguageInfo() const;

Возвращаемое значение

Возвращаемое значение определяет характеристики выбранного шрифта. Полный список возможных значений см. в разделе GetFontLanguageInfo.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetFontLanguageInfo, как описано в пакете SDK для Windows.

CDC::GetGlyphOutline

Извлекает кривую контура или растровое изображение для символа структуры в текущем шрифте.

DWORD GetGlyphOutline(
    UINT nChar,
    UINT nFormat,
    LPGLYPHMETRICS lpgm,
    DWORD cbBuffer,
    LPVOID lpBuffer,
    const MAT2* lpmat2) const;

Параметры

nChar
Указывает символ, для которого возвращаются сведения.

nFormat
Указывает формат, в котором функция будет возвращать сведения. Это может быть одно из следующих значений или 0:

Значение Значение
GGO_BITMAP Возвращает битовое изображение глифа. Когда функция возвращается, буфер, на который указывает lpBuffer буфер, содержит 1-битовое растровое изображение на пиксель, строки которого начинаются на границы двойных слов.
GGO_NATIVE Возвращает точки данных кривой в собственном формате растризатора с помощью единиц устройства. Если это значение указано, любое преобразование, указанное в lpmat2 , игнорируется.

Если значение nFormat равно 0, функция заполняет структуру GLYPHMETRICS , но не возвращает данные глифа.

lpgm
Указывает на GLYPHMETRICS структуру, описывающую размещение глифа в ячейке символа.

cbBuffer
Указывает размер буфера, в который функция копирует сведения о символе структуры. Если это значение равно 0, а nFormat параметр имеет GGO_BITMAP значение или GGO_NATIVE значения, функция возвращает требуемый размер буфера.

lpBuffer
Указывает на буфер, в который функция копирует сведения о символе структуры. Если nFormat задает GGO_NATIVE значение, данные копируются в виде TTPOLYGONHEADER и TTPOLYCURVE структурах. Если это значение имеет NULL значение или nFormat GGO_BITMAP GGO_NATIVE значение, функция возвращает требуемый размер буфера.

lpmat2
Указывает на MAT2 структуру, содержащую матрицу преобразования для символа. Этот параметр не может быть NULL, даже если GGO_NATIVE значение указано для nFormat.

Возвращаемое значение

Размер буфера в байтах, необходимый для полученной информации, если cbBuffer значение равно 0 или lpBuffer равно NULL. В противном случае это положительное значение, если функция выполнена успешно или -1, если возникла ошибка.

Замечания

Приложение может повернуть символы, полученные в формате растрового изображения, указав матрицу преобразования 2-к-2 в структуре, на которую указывает lpmat2.

Контур глифа возвращается в виде ряда контуров. Каждый контур определяется структурой TTPOLYGONHEADER , за которой следует столько TTPOLYCURVE структур, сколько требуется для описания. Все точки возвращаются в виде POINTFX структур и представляют абсолютные позиции, а не относительные перемещения. Отправной точкой, заданной pfxStart членом структуры, является точка, с которой TTPOLYGONHEADER начинается контур. Следующие TTPOLYCURVE структуры могут быть либо записями polyline, либо записями сплайна. Полилайновые записи — это ряд точек; Линии, нарисованные между точками, описывают контур символа. Записи сплайна представляют квадратные кривые, используемые TrueType (т. е. квадратиками b-splines).

CDC::GetGraphicsMode

Извлекает текущий графический режим для указанного контекста устройства.

int GetGraphicsMode() const;

Возвращаемое значение

Возвращает текущий графический режим при успешном выполнении. Список значений, возвращаемых этим методом, см. в разделе GetGraphicsMode.

Возвращает значение 0 при сбое.

Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Этот метод упаковывает функцию GetGraphicsModeGDI Windows.

CDC::GetHalftoneBrush

Вызовите эту функцию-член, чтобы получить полутонную кисть.

static CBrush* PASCAL GetHalftoneBrush();

Возвращаемое значение

Указатель на объект в случае успешного CBrush выполнения; в противном случае NULL.

Замечания

Полутонная кисть показывает пиксели, которые по-другому переднего плана и фоновые цвета для создания дитерированного шаблона. На следующей схеме показан пример дитерированного шаблона, созданного полутонной кистью:

Схема, показывающая, как состоит рифленный росчерк пера.

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

CDC::GetKerningPairs

Извлекает пары кернинга символов для шрифта, выбранного в текущем контексте устройства.

int GetKerningPairs(
    int nPairs,
    LPKERNINGPAIR lpkrnpair) const;

Параметры

nPairs
Указывает количество структур, KERNINGPAIR на которые указывается lpkrnpair. Функция не будет копировать больше пар кернинга, чем указано.nPairs

lpkrnpair
Указывает на массив структур, получающих пары кернинга KERNINGPAIR при возврате функции. Этот массив должен содержать по крайней мере столько структур, сколько указано nPairs. Если этот параметр имеет значение NULL, функция возвращает общее количество пар кернинга для шрифта.

Возвращаемое значение

Указывает количество полученных пар кернинга или общее количество пар кернинга в шрифте, если функция выполнена успешно. Ноль возвращается, если функция завершается ошибкой или для шрифта отсутствуют пары кернинга.

CDC::GetLayout

Вызовите эту функцию-член, чтобы определить макет текста и графики для контекста устройства, например принтера или метафайла.

DWORD GetLayout() const;

Возвращаемое значение

В случае успешного выполнения флаги макета для текущего контекста устройства. В противном случае — GDI_ERROR. Для получения расширенных сведений об ошибке вызов GetLastError. Список флагов макета см. в разделе CDC::SetLayout.

Замечания

Макет по умолчанию слева направо.

CDC::GetMapMode

Извлекает текущий режим сопоставления.

int GetMapMode() const;

Возвращаемое значение

Режим сопоставления.

Замечания

Описание режимов сопоставления см. в функции-члене SetMapMode .

Примечание.

Если вы вызываете SetLayout изменение макета контроллера домена направо налево, SetLayout автоматически измените режим MM_ISOTROPICсопоставления на . Следовательно, любой последующий вызов GetMapMode возвращается MM_ISOTROPIC.

CDC::GetMiterLimit

Возвращает ограничение митер для контекста устройства.

float GetMiterLimit() const;

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Ограничение митер используется при рисовании геометрических линий с соединениями митера.

CDC::GetNearestColor

Возвращает сплошной цвет, который лучше всего соответствует указанному логическому цвету.

COLORREF GetNearestColor(COLORREF crColor) const;

Параметры

crColor
Указывает соответствующий цвет.

Возвращаемое значение

Значение цвета RGB (красный, зеленый, синий), определяющее сплошной цвет, ближайший к crColor значению, которое может представлять устройство.

Замечания

Данное устройство должно иметь возможность представлять этот цвет.

CDC::GetOutlineTextMetrics

Извлекает сведения о метриках для шрифтов TrueType.

UINT GetOutlineTextMetrics(
    UINT cbData,
    LPOUTLINETEXTMETRIC lpotm) const;

Параметры

lpotm
Указывает на массив OUTLINETEXTMETRIC структур. Если этот параметр имеет значение NULL, функция возвращает размер буфера, необходимого для полученных данных метрик.

cbData
Задает размер буфера, в байтах, в котором возвращаются сведения.

lpotm
Указывает на структуру OUTLINETEXTMETRIC . Если этот параметр имеет значение NULL, функция возвращает размер буфера, необходимый для полученных сведений о метриках.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Структура OUTLINETEXTMETRIC содержит большую часть сведений о метриках шрифта, предоставляемых форматом TrueType, включая структуру TEXTMETRIC . Последние четыре члена OUTLINETEXTMETRIC структуры — это указатели на строки. Приложения должны выделять пространство для этих строк в дополнение к пространству, необходимому для других элементов. Так как в системе нет ограничений на размер строк, самый простой метод выделения памяти заключается в том, чтобы получить требуемый размер, указав ЗНАЧЕНИЕ NULL lpotm в первом вызове GetOutlineTextMetrics функции.

CDC::GetOutputCharWidth

Использует контекст m_hDCвыходного устройства и извлекает ширину отдельных символов в последовательной группе символов из текущего шрифта.

BOOL GetOutputCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

Параметры

nFirstChar
Задает первый символ в последовательной группе символов в текущем шрифте.

nLastChar
Задает последний символ в последовательной группе символов в текущем шрифте.

lpBuffer
Указывает на буфер, который получит значения ширины для последовательной группы символов в текущем шрифте.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Например, если nFirstChar идентифицирует букву "a" и nLastChar идентифицирует букву "z", функция извлекает ширину всех строчных символов.

Функция сохраняет значения в буфере, на который указывает lpBuffer. Этот буфер должен быть достаточно большим, чтобы сохранить все ширины; То есть в приведенном примере должно быть не менее 26 записей.

Если символ в последовательной группе символов не существует в определенном шрифте, оно будет назначено значение ширины символа по умолчанию.

CDC::GetOutputTabbedTextExtent

Вызовите эту функцию-член, чтобы вычислить ширину и высоту символьной строки с помощью m_hDCконтекста выходного устройства.

CSize GetOutputTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetOutputTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

Параметры

lpszString
Указывает на символьную строку для измерения. Вы также можете передать CString объект для этого параметра.

nCount
Указывает длину строки , на которую указывает lpszString.

nTabPositions
Указывает количество позиций табуляции в массиве, на которое указывает lpnTabStopPositions.

lpnTabStopPositions
Указывает на массив целых чисел, содержащих позиции табуляции в логических единицах. Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве. Вкладки "Назад" не допускаются.

str
CString Объект, содержащий указанные символы для измерения.

Возвращаемое значение

Размеры строки (в логических единицах) в объекте CSize .

Замечания

Если строка содержит один или несколько символов табуляции, ширина строки зависит от табуляции, указанной в параметре lpnTabStopPositions. Функция использует выбранный в данный момент шрифт для вычисления измерений строки.

Текущий регион вырезки не смещает ширину и высоту, возвращаемую функцией GetOutputTabbedTextExtent .

Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они кернируют символы), сумма экстентов символов в строке может не совпадать с степенью строки.

Если nTabPositions значение равно 0 и lpnTabStopPositions NULLимеет значение, вкладки расширяются до восьми средних ширин символов. Если nTabPositions значение равно 1, точки табуляции будут разделены расстоянием, указанным первым значением в массиве, в котором lpnTabStopPositions указываются точки. Если lpnTabStopPositions указывает на несколько значений, точка табуляции устанавливается для каждого значения в массиве до числа, указанного в nTabPositionsпараметре.

CDC::GetOutputTextExtent

Вызовите эту функцию-член, чтобы использовать контекст выходного устройства, m_hDCа также вычислить ширину и высоту строки текста с помощью текущего шрифта.

CSize GetOutputTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetOutputTextExtent(const CString& str) const;

Параметры

lpszString
Указывает на строку символов. Вы также можете передать CString объект для этого параметра.

nCount
Указывает длину строки , на которую указывает lpszString.

str
CString Объект, содержащий указанные символы для измерения.

Возвращаемое значение

Измерения строки (в логических единицах), возвращаемые в CSize объекте.

Замечания

Текущий регион вырезки не влияет на ширину и высоту, возвращаемую GetOutputTextExtent.

Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они выполняют кернинг), сумма экстентов символов в строке может не совпадать с степенью строки.

CDC::GetOutputTextMetrics

Извлекает метрики текущего шрифта с помощью m_hDCконтекста выходного устройства.

BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;

Параметры

lpMetrics
Указывает на структуру TEXTMETRIC , которая получает метрики.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

CDC::GetPath

Извлекает координаты, определяющие конечные точки линий и контрольные точки кривых, найденных в пути, выбранном в контексте устройства.

int GetPath(
    LPPOINT lpPoints,
    LPBYTE lpTypes,
    int nCount) const;

Параметры

lpPoints
Указывает на массив POINT структур данных или CPoint объектов, где размещаются конечные точки линии и точки управления кривой.

lpTypes
Указывает на массив байтов, где размещаются типы вершин. Значения являются одним из следующих значений:

  • PT_MOVETO Указывает, что соответствующая точка в lpPoints начале разрозначного рисунка.

  • PT_LINETO Указывает, что предыдущая точка и соответствующая точка lpPoints являются конечными точками строки.

  • PT_BEZIERTO Указывает, что соответствующая точка находится в lpPoints контрольной точке или конечной точке для кривой Bzier.

PT_BEZIERTO типы всегда происходят в наборах из трех. Точка в пути непосредственно перед ними определяет начальную точку для кривой Bzier. Первые две PT_BEZIERTO точки являются контрольными точками, а третья PT_BEZIERTO — конечная точка (если жестко закодирована).

Тип PT_LINETO или тип можно объединить со следующим флагом (с помощью побитового оператора OR), чтобы указать, что соответствующая точка является последней точкой на рисунке и что рисунок должен быть PT_BEZIERTO закрыт:

  • PT_CLOSEFIGURE Указывает, что рисунок автоматически закрывается после рисования соответствующей линии или кривой. Рисунок закрывается путем рисования линии из конечной точки линии или кривой в точку, соответствующую последней PT_MOVETO.

nCount
Указывает общее количество POINT структур данных, которые могут быть помещены в lpPoints массив. Это значение должно совпадать с количеством байтов, которые могут быть помещены в lpTypes массив.

Возвращаемое значение

nCount Если параметр является ненулевой, количество перечисленных точек. Если nCount значение равно 0, общее количество точек в пути (и GetPath ничего не записывает в буферы). Если nCount значение ненулевого значения меньше количества точек в пути, возвращаемое значение равно -1.

Замечания

Контекст устройства должен содержать закрытый путь. Точки пути возвращаются в логических координатах. Точки хранятся в пути в координатах устройства, поэтому GetPath изменяет точки с координат устройства на логические координаты с помощью обратного текущего преобразования. Функция-член FlattenPath может быть вызвана до GetPath, чтобы преобразовать все кривые в пути в сегменты линий.

Пример

Пример см. в примере CDC::BeginPath.

CDC::GetPixel

Извлекает значение цвета RGB пикселя в точке, заданной x и *y*.

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

Параметры

x
Указывает логическую координату x точки для проверки.

y
Указывает логическую координату точки для проверки.

point
Задает логические координаты x-и y точки для проверки.

Возвращаемое значение

Для любой версии функции значение цвета RGB для цвета заданной точки. Это значение -1, если координаты не указывают точку в области вырезки.

Замечания

Точка должна находиться в регионе вырезки. Если точка отсутствует в области вырезки, функция не имеет эффекта и возвращает -1.

Не все устройства поддерживают функцию GetPixel. Дополнительные сведения см. в RC_BITBLT разделе о возможности растра в функции-члене GetDeviceCaps .

Функция-член GetPixel имеет две формы. Первый принимает два значения координат; второй принимает структуру POINT или CPoint объект.

CDC::GetPolyFillMode

Извлекает текущий режим заполнения многоугольников.

int GetPolyFillMode() const;

Возвращаемое значение

Текущий многоугольник или , ALTERNATE WINDINGесли функция выполнена успешно.

Замечания

Сведения о режимах заполнения многоугольников см. в SetPolyFillMode функции-члене.

CDC::GetROP2

Извлекает текущий режим рисования.

int GetROP2() const;

Возвращаемое значение

Режим рисования. Список значений режима рисования см. в функции-члене SetROP2 .

Замечания

Режим рисования указывает, как цвета пера и интерьер заполненных объектов объединяются с цветом, уже на поверхности отображения.

CDC::GetSafeHdc

Вызовите эту функцию-член, чтобы получить m_hDC, контекст выходного устройства.

HDC GetSafeHdc() const;

Возвращаемое значение

Дескриптор контекста устройства.

Замечания

Эта функция-член также работает с указателями NULL.

CDC::GetStretchBltMode

Извлекает текущий режим растягивания растровых изображений.

int GetStretchBltMode() const;

Возвращаемое значение

Возвращаемое значение указывает текущий режим растягивания растровых изображений ( STRETCH_ANDSCANSSTRETCH_DELETESCANSили STRETCH_ORSCANS ), если функция выполнена успешно.

Замечания

Режим растягивания растровых карт определяет, как данные удаляются из растровых изображений, растянутых или сжатых функцией-членом StretchBlt .

STRETCH_ORSCANS Как STRETCH_ANDSCANS правило, режимы используются для сохранения пикселей переднего плана в монохромных растровых изображениях. Обычно этот STRETCH_DELETESCANS режим используется для сохранения цвета в растровых изображениях цвета.

CDC::GetTabbedTextExtent

Вызовите эту функцию-член, чтобы вычислить ширину и высоту символьной строки с помощью m_hAttribDCконтекста устройства атрибута.

CSize GetTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

Параметры

lpszString
Указывает на символьную строку. Вы также можете передать CString объект для этого параметра.

nCount
Указывает длину строки , на которую указывает lpszString.

nTabPositions
Указывает количество позиций табуляции в массиве, на которое указывает lpnTabStopPositions.

lpnTabStopPositions
Указывает на массив целых чисел, содержащих позиции табуляции в логических единицах. Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве. Вкладки "Назад" не допускаются.

str
CString Объект, содержащий указанные символы для рисования.

Возвращаемое значение

Размеры строки (в логических единицах) в объекте CSize .

Замечания

Если строка содержит один или несколько символов табуляции, ширина строки зависит от табуляции, указанной в параметре lpnTabStopPositions. Функция использует выбранный в данный момент шрифт для вычисления измерений строки.

Текущий регион вырезки не смещает ширину и высоту, возвращаемую функцией GetTabbedTextExtent .

Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они кернируют символы), сумма экстентов символов в строке может не совпадать с степенью строки.

Если nTabPositions значение равно 0 и lpnTabStopPositions NULLимеет значение, вкладки расширяются до восьми раз средней ширины символов. Если nTabPositions значение равно 1, точки табуляции будут разделены расстоянием, указанным первым значением в массиве, в котором lpnTabStopPositions указываются точки. Если lpnTabStopPositions указывает на несколько значений, точка табуляции устанавливается для каждого значения в массиве до числа, указанного в nTabPositionsпараметре.

CDC::GetTextAlign

Извлекает состояние флагов выравнивания текста для контекста устройства.

UINT GetTextAlign() const;

Возвращаемое значение

Состояние флагов выравнивания текста. Возвращаемое значение является одним или несколькими из следующих значений:

  • TA_BASELINE Указывает выравнивание оси x и базовых показателей выбранного шрифта в ограничивающем прямоугольнике.

  • TA_BOTTOM Указывает выравнивание оси x и нижней части ограничивающего прямоугольника.

  • TA_CENTER Указывает выравнивание оси Y и центра ограничивающего прямоугольника.

  • TA_LEFT Указывает выравнивание оси Y и левой стороны ограничивающего прямоугольника.

  • TA_NOUPDATECP Указывает, что текущая позиция не обновляется.

  • TA_RIGHT Указывает выравнивание оси Y и правой стороны ограничивающего прямоугольника.

  • TA_TOP Указывает выравнивание оси x и верхней части ограничивающего прямоугольника.

  • TA_UPDATECP Указывает, что текущая позиция обновляется.

Замечания

Флаги выравнивания текста определяют, как TextOut ExtTextOut функции-члены выравнивают строку текста относительно начальной точки строки. Флаги выравнивания текста не обязательно одно битовые флаги и могут быть равны 0. Чтобы проверить, задан ли флаг, приложение должно выполнить следующие действия:

  1. Примените побитовый оператор OR (|) к флагу и его связанным флагам, сгруппированные следующим образом:

    • TA_LEFT, TA_CENTER и TA_RIGHT

    • TA_BASELINE, TA_BOTTOM и TA_TOP

    • TA_NOUPDATECP и TA_UPDATECP.

  2. Примените побитовый оператор C++ AND (&) к результату и возвращаемого GetTextAlignзначения.

  3. Проверьте равенство этого результата и флага.

CDC::GetTextCharacterExtra

Извлекает текущий параметр для количества интервалов между диаграммами.

int GetTextCharacterExtra() const;

Возвращаемое значение

Объем интервала между диаграммами.

Замечания

GDI добавляет этот интервал к каждому символу, включая символы останова, при записи строки текста в контекст устройства.

Значение по умолчанию для интервала между диаграммами равно 0.

CDC::GetTextColor

Извлекает текущий цвет текста.

COLORREF GetTextColor() const;

Возвращаемое значение

Текущий цвет текста в качестве значения цвета RGB.

Замечания

Цвет текста — это цвет переднего плана символов, рисуемых с помощью функций TextOutэлементов элемента GDI для вывода текста , ExtTextOutи TabbedTextOut.

CDC::GetTextExtent

Вызовите эту функцию-член, чтобы вычислить ширину и высоту строки текста с помощью текущего шрифта для определения измерений.

CSize GetTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetTextExtent(const CString& str) const;

Параметры

lpszString
Указывает на строку символов. Вы также можете передать CString объект для этого параметра.

nCount
Указывает количество знаков в строке.

str
CString Объект, содержащий указанные символы.

Возвращаемое значение

Размеры строки (в логических единицах) в объекте CSize .

Замечания

Сведения извлекаются из m_hAttribDCконтекста устройства атрибута.

По умолчанию предполагается, что текст, для которого он извлекает измерение, GetTextExtent устанавливается вдоль горизонтальной линии (т. е. escapement равно 0). При создании шрифта, указывающего ненулевое escapement, необходимо явно преобразовать угол текста, чтобы получить размеры строки.

Текущий регион вырезки не влияет на ширину и высоту, возвращаемую GetTextExtent.

Так как некоторые устройства не помещают символы в обычные массивы ячеек (т. е. они выполняют кернинг), сумма экстентов символов в строке может не совпадать с степенью строки.

CDC::GetTextExtentExPointI

Извлекает количество символов в указанной строке, которая будет соответствовать заданному пространству и заполняет массив экстентом текста для каждого из этих символов.

BOOL GetTextExtentExPointI(
    LPWORD pgiIn,
    int cgi,
    int nMaxExtent,
    LPINT lpnFit,
    LPINT alpDx,
    LPSIZE lpSize) const;

Параметры

pgiIn
Указатель на массив глифовых индексов, для которых извлекаются экстенты.

cgi
Указывает количество глифов в массиве, на которое указывает pgiIn.

nMaxExtent
Указывает максимальную допустимую ширину в логических единицах форматируемой строки.

lpnFit
Указатель на целое число, которое получает количество максимальное число символов, которое будет помещаться в пространство, указанное в nMaxExtentполе. В противном lpnFit случае nMaxExtent NULLигнорируется.

alpDx
Указатель на массив целых чисел, получающих частичные глифы. Каждый элемент в массиве дает расстояние в логических единицах между началом массива индексов глифов и одним из глифов, которые помещаются в пространство, указанное в nMaxExtentполе. Хотя этот массив должен содержать по крайней мере столько элементов, сколько индексов глифов, указанных в cgiпараметре, функция заполняет массив экстентами только для сколько глифовых индексов, как указано в lpnFit. Если lpnDx это NULLтак, функция не вычисляет частичную ширину строк.

lpSize
Указатель на SIZE структуру, которая получает измерения массива индексов глифов в логических единицах. Это значение не может быть равно NULL.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetTextExtentExPointI, как описано в пакете SDK для Windows.

CDC::GetTextExtentPointI

Извлекает ширину и высоту указанного массива глифовых индексов.

BOOL GetTextExtentPointI(
    LPWORD pgiIn,
    int cgi,
    LPSIZE lpSize) const;

Параметры

pgiIn
Указатель на массив глифовых индексов, для которых извлекаются экстенты.

cgi
Указывает количество глифов в массиве, на которое указывает pgiIn.

lpSize
Указатель на SIZE структуру, которая получает измерения массива индексов глифов в логических единицах. Это значение не может быть равно NULL.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция-член эмулирует функциональные возможности функции функции GetTextExtentPointI, как описано в пакете SDK для Windows.

CDC::GetTextFace

Вызовите эту функцию-член, чтобы скопировать имя шрифта текущего шрифта в буфер.

int GetTextFace(
    int nCount,
    LPTSTR lpszFacename) const;

int GetTextFace(CString& rString) const;

Параметры

nCount
Задает размер буфера (в байтах). Если имя шрифта больше числа байтов, указанного этим параметром, имя усечено.

lpszFacename
Указывает на буфер для имени шрифта.

rString
Ссылка на объект CString.

Возвращаемое значение

Число байтов, скопированных в буфер, не включая завершающий символ NULL. Если возникает ошибка, это значение 0.

Замечания

Имя шрифта копируется в виде строки, завершаемой значением NULL.

CDC::GetTextMetrics

Извлекает метрики для текущего шрифта с помощью контекста устройства атрибута.

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;

Параметры

lpMetrics
Указывает на структуру TEXTMETRIC , которая получает метрики.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

CDC::GetViewportExt

Извлекает x-и y-экстенты окна просмотра контекста устройства.

CSize GetViewportExt() const;

Возвращаемое значение

X-и y-экстенты (в единицах устройства) в качестве CSize объекта.

CDC::GetViewportOrg

Извлекает координаты x-и y источника окна просмотра, связанного с контекстом устройства.

CPoint GetViewportOrg() const;

Возвращаемое значение

Источник окна просмотра (в координатах устройства) в качестве CPoint объекта.

CDC::GetWindow

Возвращает окно, связанное с контекстом устройства отображения.

CWnd* GetWindow() const;

Возвращаемое значение

Указатель на объект в случае успешного CWnd выполнения; в противном случае NULL.

Замечания

Это расширенная функция. Например, эта функция-член может не возвращать окно представления при печати или предварительном просмотре. Он всегда возвращает окно, связанное с выходными данными. Выходные функции, использующие заданный контроллер домена в этом окне.

CDC::GetWindowExt

Извлекает x-и y-экстенты окна, связанного с контекстом устройства.

CSize GetWindowExt() const;

Возвращаемое значение

Экстенты x и y (в логических единицах) в качестве CSize объекта.

CDC::GetWindowOrg

Извлекает координаты x-и y источника окна, связанного с контекстом устройства.

CPoint GetWindowOrg() const;

Возвращаемое значение

Источник окна (в логических координатах) в качестве CPoint объекта.

CDC::GetWorldTransform

Извлекает текущее преобразование пространства мира в пространство страницы.

BOOL GetWorldTransform(XFORM& rXform) const;

Параметры

rXform
Ссылка на структуру, которая получает текущее XFORM пространство в пространстве страницы.

Возвращаемое значение

Возвращает ненулевое значение при успешном выполнении.

Возвращает значение 0 при сбое.

Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Этот метод упаковывает функцию GetWorldTransformGDI Windows.

CDC::GradientFill

Вызовите эту функцию-член, чтобы заполнить прямоугольник и треугольники структуры цветом, который плавно исчезает с одной стороны к другой.

BOOL GradientFill(
    TRIVERTEX* pVertices,
    ULONG nVertices,
    void* pMesh,
    ULONG nMeshElements,
    DWORD dwMode);

Параметры

pVertices
Указатель на массив TRIVERTEX структур, которые определяют вершину треугольника.

nVertices
Число вершин.

pMesh
Массив структур в режиме треугольника GRADIENT_TRIANGLE GRADIENT_RECT или массив структур в прямоугольном режиме.

nMeshElements
Количество элементов (треугольников или прямоугольников) в pMesh.

dwMode
Задает режим градиентной заливки. Список возможных значений см GradientFill . в пакете SDK для Windows.

Возвращаемое значение

Значение TRUE в случае успешного выполнения; в противном случае — значение FALSE.

Замечания

Дополнительные сведения см GradientFill . в пакете SDK для Windows.

CDC::GrayString

Рисует неактивный (серый) текст в заданном расположении, записывая текст в растровом рисунке памяти, тем самым отмеряя растровое изображение, а затем копируя растровое изображение на экран.

virtual BOOL GrayString(
    CBrush* pBrush,
    BOOL (CALLBACK* lpfnOutput)(
    HDC,
    LPARAM,
    int),
    LPARAM lpData,
    int nCount,
    int x,
    int y,
    int nWidth,
    int nHeight);

Параметры

pBrush
Идентифицирует кисть, которая будет использоваться для тумнения (серый цвет).

lpfnOutput
Указывает адрес экземпляра процедуры для функции обратного вызова, предоставленной приложением, которая будет нарисовывать строку. Дополнительные сведения см. в описании функции обратного вызова Windows.OutputFunc Если этот параметр имеет значение NULL, система использует функцию Windows TextOut для рисования строки и lpData предполагается, что это длинный указатель на строку символов, которая будет выводиться.

lpData
Указывает далекое указатель на данные, передаваемые в выходную функцию. Если lpfnOutput это NULLтак, lpData должен быть длинным указателем на строку, которая должна быть выходными.

nCount
Указывает количество символов, которые должны быть выходными. Если этот параметр равен 0, GrayString вычисляет длину строки (если lpData это указатель на строку). Если nCount значение равно 1 и функция, на которую указывает lpfnOutput значение 0, изображение отображается, но не отключено.

x
Задает логическую координату x начальной позиции прямоугольника, которая заключает строку.

y
Задает логическую координату Y начальной позиции прямоугольника, заключающей строку.

nWidth
Задает ширину (в логических единицах) прямоугольника, заключающего строку. Если nWidth значение равно 0, GrayString вычисляет ширину области, предполагая lpData , что это указатель на строку.

nHeight
Указывает высоту (в логических единицах) прямоугольника, заключающего строку. Если nHeight значение равно 0, GrayString вычисляет высоту области, предполагая lpData , что это указатель на строку.

Возвращаемое значение

Ненулевое значение, если строка рисуется, или 0, если TextOut функция или функция, предоставляемая приложением выходная функция, возвращала 0, или если недостаточно памяти для создания растрового изображения памяти для уменьшения размеров памяти.

Замечания

Функция вымевает текст независимо от выбранной кисти и фона. Функция-член GrayString использует выбранный в данный момент шрифт. Перед MM_TEXT использованием этой функции необходимо выбрать режим сопоставления.

Приложение может нарисовать неактивные (серые) строки на устройствах, поддерживающих сплошной серый цвет, не вызывая функцию-член GrayString . Системный цвет — это сплошной серый цвет COLOR_GRAYTEXT системы, используемый для рисования отключенного текста. Приложение может вызвать GetSysColor функцию Windows, чтобы получить значение COLOR_GRAYTEXTцвета. Если цвет отличается от 0 (черный), приложение может вызвать SetTextColor функцию-член, чтобы задать цвет текста для значения цвета, а затем нарисовать строку напрямую. Если извлеченный цвет является черным, приложение должно вызвать GrayString тусклый (серый) текст.

Если lpfnOutput это NULLтак, GDI использует функцию Windows TextOut и lpData предполагается, что он является гораздо указателем на символ, который будет выводиться. Если выходные данные символов не могут обрабатываться TextOut функцией-членом (например, строка хранится в виде растрового изображения), приложение должно предоставить собственную выходную функцию.

Все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".

Функция обратного __stdcall вызова, переданная для GrayString использования соглашения о вызовах, должна экспортироваться с __declspecпомощью .

Когда платформа находится в режиме предварительной TextOut версии, вызов функции-члена преобразуется в вызовGrayString, а функция обратного вызова не вызывается.

CDC::HIMETRICtoDP

Эта функция используется при преобразовании HIMETRIC размеров из OLE в пиксели.

void HIMETRICtoDP(LPSIZE lpSize) const;

Параметры

lpSize
Указывает на структуру SIZE или CSize объект.

Замечания

Если режим сопоставления объекта контекста устройства имеет MM_LOENGLISHзначение , MM_HIENGLISHMM_LOMETRIC или MM_HIMETRICпреобразование основано на количестве пикселей на физическом дюйме. Если режим сопоставления является одним из других неократных режимов (например, MM_TEXT), преобразование основано на количестве пикселей в логическом дюйме.

CDC::HIMETRICtoLP

Вызовите эту функцию для преобразования HIMETRIC единиц в логические единицы.

void HIMETRICtoLP(LPSIZE lpSize) const;

Параметры

lpSize
Указывает на структуру SIZE или CSize объект.

Замечания

Используйте эту функцию при получении HIMETRIC размеров из OLE и хотите преобразовать их в естественный режим сопоставления приложения.

Преобразование выполняется путем первого преобразования HIMETRIC единиц в пиксели и последующего преобразования этих единиц в логические единицы с помощью текущих единиц сопоставления контекста устройства. Обратите внимание, что экстенты окна устройства и окна просмотра повлияют на результат.

CDC::IntersectClipRect

Создает новую область вырезки путем формирования пересечения текущего региона и прямоугольника, указанного x1в , y1x2и y2.

int IntersectClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int IntersectClipRect(LPCRECT lpRect);

Параметры

x1
Задает логическую координату x левого верхнего угла прямоугольника.

y1
Задает логическую координату Y верхнего левого угла прямоугольника.

x2
Задает логическую координату x правого нижнего угла прямоугольника.

y2
Задает логическую координату y правого нижнего угла прямоугольника.

lpRect
Задает прямоугольник. Для этого параметра можно передать CRect объект или указатель на структуру RECT .

Возвращаемое значение

Новый тип вырезки региона. Это может быть любое из следующих значений:

  • COMPLEXREGION Новый регион вырезки имеет перекрывающиеся границы.

  • ERROR Недопустимый контекст устройства.

  • NULLREGION Новая область вырезки пуста.

  • SIMPLEREGION Новый регион вырезки не имеет перекрывающихся границ.

Замечания

GDI клипирует все последующие выходные данные, которые будут соответствовать новой границе. Ширина и высота не должны превышать 32 767.

CDC::InvertRect

Инвертирует содержимое заданного прямоугольника.

void InvertRect(LPCRECT lpRect);

Параметры

lpRect
Указывает на RECT то, что содержит логические координаты прямоугольника, которые необходимо инвертировать. Вы также можете передать CRect объект для этого параметра.

Замечания

Инверсия — это логическая операция NOT и перевернутые биты каждого пикселя. При монохромном отображении функция делает белые пиксели черными и черными пикселями белыми. При отображении цвета инверсия зависит от того, как создаются цвета для отображения. При вызове InvertRect дважды с одинаковым прямоугольником экран восстанавливается до предыдущих цветов.

Если прямоугольник пуст, ничего не рисуется.

Пример

void CDCView::DoInvertRect(CDC *pDC)
{
   // invert rect from 20,20 to 50,50
   CRect rect(20, 20, 50, 50);
   pDC->InvertRect(rect);

   // inverting again restores to normal
   ::Sleep(1000);
   pDC->InvertRect(rect);
}

CDC::InvertRgn

Инвертирует цвета в регионе, заданном pRgn.

BOOL InvertRgn(CRgn* pRgn);

Параметры

pRgn
Идентифицирует регион, который необходимо изменить. Координаты для региона указываются в логических единицах.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

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

CDC::IsPrinting

Определяет, используется ли контекст устройства для печати.

BOOL IsPrinting() const;

Возвращаемое значение

Ненулевое CDC значение, если объект является контроллером домена принтера; в противном случае — значение 0.

CDC::LineTo

Рисует линию от текущей позиции до, но не включая, точку, указанную x и y (или point).

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

Параметры

x
Задает логическую координату x конечной точки для строки.

y
Указывает логическую координату y конечной точки для строки.

point
Указывает конечную точку для строки. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Ненулевое значение, если линия рисуется; в противном случае — 0.

Замечания

Линия рисуется с выбранным пером. Текущая позиция имеет xзначение , y или значение point.

Пример

Пример см. в примере CRect::CenterPoint.

CDC::LPtoDP

Преобразует логические единицы в единицы устройства.

void LPtoDP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;

Параметры

lpPoints
Указывает на массив точек. Каждая точка в массиве — это POINT структура или CPoint объект.

nCount
Количество точек в массиве.

lpRect
Указывает на структуру RECT CRect или объект. Этот параметр используется для общего случая сопоставления прямоугольника из логических единиц устройств.

lpSize
Указывает на структуру SIZE CSize или объект.

Замечания

Функция сопоставляет координаты каждой точки или измерения размера из логической системы координат GDI в систему координат устройства. Преобразование зависит от текущего режима сопоставления и параметров источников и экстентов окна устройства и окна просмотра.

Координаты x- и y точек — 2-байтовые целые числа со знаком в диапазоне –32 768–32 767. В случаях, когда режим сопоставления приведет к значению, превышающим эти ограничения, система задает значения 32 768 и 32 767 соответственно.

CDC::LPtoHIMETRIC

Вызовите эту функцию для преобразования логических единиц в HIMETRIC единицы.

void LPtoHIMETRIC(LPSIZE lpSize) const;

Параметры

lpSize
Указывает на структуру SIZE CSize или объект.

Замечания

Используйте эту функцию при добавлении HIMETRIC размеров в OLE, преобразовывая из естественного режима сопоставления приложения. Экстенты окна устройства и окна просмотра повлияют на результат.

Преобразование выполняется путем первого преобразования логических единиц в пиксели с помощью текущих единиц сопоставления контекста устройства, а затем преобразования этих единиц в HIMETRIC единицы.

CDC::m_hAttribDC

Контекст устройства атрибута для этого CDC объекта.

HDC m_hAttribDC;

Замечания

По умолчанию этот контекст устройства равен m_hDC. Как правило, вызовы GDI, запрашивающие сведения из контекста устройства, CDC направляются в m_hAttribDC. CDC Дополнительные сведения об использовании этих двух контекстов устройств см. в описании класса.

CDC::m_hDC

Контекст выходного устройства для этого CDC объекта.

HDC m_hDC;

Замечания

По умолчанию равно m_hAttribDCдругому m_hDC контексту CDCустройства. Как правило, вызовы GDI, создающие выходные m_hDC данные, CDC переходят в контекст устройства. Вы можете инициализировать m_hDC и m_hAttribDC указать на разные устройства. CDC Дополнительные сведения об использовании этих двух контекстов устройств см. в описании класса.

CDC::MaskBlt

Объединяет данные цвета для исходных и целевых растровых изображений с помощью заданной операции маски и растра.

BOOL MaskBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    CBitmap& maskBitmap,
    int xMask,
    int yMask,
    DWORD dwRop);

Параметры

x
Задает логическую координату x левого верхнего угла прямоугольника назначения.

y
Задает логическую координату y верхнего левого угла прямоугольника назначения.

nWidth
Задает ширину в логических единицах целевого прямоугольника и исходного растрового изображения.

nHeight
Задает высоту в логических единицах целевого прямоугольника и исходного растрового изображения.

pSrcDC
Определяет контекст устройства, из которого копируется растровое изображение. Оно должно быть равно нулю, если dwRop параметр указывает операцию растра, которая не включает источник.

xSrc
Задает логическую координату x левого верхнего угла исходного растрового изображения.

ySrc
Указывает логическую координату Y верхнего левого угла исходного растрового изображения.

maskBitmap
Определяет растровое изображение монохромной маски в сочетании с цветным растровым изображением в контексте исходного устройства.

xMask
Задает горизонтальное смещение пикселя для растрового изображения маски, указанного параметром maskBitmap .

yMask
Указывает вертикальное смещение пикселя для растрового изображения маски, указанного параметром maskBitmap .

dwRop
Задает коды операций переднего плана и фонового растра, которые функция использует для управления сочетанием исходных и целевых данных. Код операции фонового растра хранится в высоком байте большого слова этого значения; Код операции растра переднего плана хранится в низком байте высокого слова этого значения; Низкое слово этого значения игнорируется и должно быть равно нулю. Макрос MAKEROP4 создает такие сочетания кодов операций переднего плана и фонового растра. См. раздел "Примечания" для обсуждения переднего плана и фона в контексте этой функции. См. функцию-член BitBlt для списка распространенных кодов операций растра.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Значение 1 в маске, указанное в maskBitmap маске, указывает, что код операции растрового растра переднего плана, указанный в dwRop этом расположении. Значение 0 в маске указывает, что код операции фонового растра, указанный dwRop в этом расположении. Если для операций растра требуется источник, прямоугольник маски должен охватывать исходный прямоугольник. Если это не так, функция завершается ошибкой. Если для операций растра не требуется источник, прямоугольник маски должен охватывать прямоугольник назначения. Если это не так, функция завершается ошибкой.

Если преобразование поворота или переключения действует для контекста исходного устройства при вызове этой функции, возникает ошибка. Однако разрешены другие типы преобразований.

Если цветовые форматы исходного, шаблона и целевого растровых изображений отличаются, эта функция преобразует шаблон или исходный формат, или оба, чтобы соответствовать целевому формату. Если растровое изображение маски не является однохромным, возникает ошибка. При записи расширенного метафайла возникает ошибка (и функция возвращает 0), если контекст исходного устройства определяет расширенный контекст метафайла устройства. Не все устройства поддерживаются MaskBlt. Приложение должно вызываться GetDeviceCaps , чтобы определить, поддерживает ли устройство эту функцию. Если растровое изображение маски не предоставлено, эта функция ведет себя точно так BitBltже, используя код операции растра переднего плана. Смещение пикселей в схеме растровой карты маски с точкой (0,0) в растровом рисунке исходного устройства. Это полезно для случаев, когда растровое изображение маски содержит набор маски; Приложение может легко применить любой из них к задаче маскирования, изменив смещения пикселей и размеры прямоугольника, отправленные MaskBltв .

CDC::ModifyWorldTransform

Изменяет преобразование мира для контекста устройства с помощью указанного режима.

BOOL ModifyWorldTransform(
    const XFORM& rXform,
    DWORD iMode);

Параметры

rXform
Ссылка на структуру, XFORM используемую для изменения преобразования мира для данного контекста устройства.

iMode
Указывает, как данные преобразования изменяют текущее преобразование мира. Список значений, которые может принимать этот параметр, см. в разделе ModifyWorldTransform.

Возвращаемое значение

Возвращает ненулевое значение при успешном выполнении.

Возвращает значение 0 при сбое.

Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Этот метод упаковывает функцию ModifyWorldTransformGDI Windows.

CDC::MoveTo

Перемещает текущую позицию в точку, указанную x и y (или по point).

CPoint MoveTo(
    int x,
    int y);

CPoint MoveTo(POINT point);

Параметры

x
Задает логическую координату x новой позиции.

y
Задает логическую координату y новой позиции.

point
Задает новую позицию. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Координаты x-и y предыдущей позиции в качестве CPoint объекта.

Пример

Пример см. в примере CRect::CenterPoint.

CDC::OffsetClipRgn

Перемещает область вырезки контекста устройства по указанным смещениям.

int OffsetClipRgn(
    int x,
    int y);

int OffsetClipRgn(SIZE size);

Параметры

x
Указывает количество логических единиц для перемещения влево или вправо.

y
Указывает количество логических единиц для перемещения вверх или вниз.

size
Указывает сумму смещения.

Возвращаемое значение

Тип нового региона. Это может быть любое из следующих значений:

  • COMPLEXREGION Область вырезки имеет перекрывающиеся границы.

  • ERROR Недопустимый контекст устройства.

  • NULLREGION Область вырезки пуста.

  • SIMPLEREGION Область вырезки не имеет перекрывающихся границ.

Замечания

Функция перемещает единицы региона x вдоль оси x и y единиц вдоль оси y.

CDC::OffsetViewportOrg

Изменяет координаты источника представления относительно координат текущего источника представления.

virtual CPoint OffsetViewportOrg(
    int nWidth,
    int nHeight);

Параметры

nWidth
Указывает количество единиц устройства, добавляемых в координату x-координат текущего источника.

nHeight
Указывает количество единиц устройства, добавляемых в координату y текущего источника.

Возвращаемое значение

Предыдущий источник окна просмотра (в координатах устройства) в качестве CPoint объекта.

CDC::OffsetWindowOrg

Изменяет координаты источника окна относительно координат текущего источника окна.

CPoint OffsetWindowOrg(
    int nWidth,
    int nHeight);

Параметры

nWidth
Указывает количество логических единиц, добавляемых в координату x-координат текущего источника.

nHeight
Указывает количество логических единиц, добавляемых в координату y текущего источника.

Возвращаемое значение

Предыдущий источник окна (в логических координатах) в качестве CPoint объекта.

CDC::operator HDC

Используйте этот оператор для получения дескриптора контекста CDC устройства объекта.

operator HDC() const;

Возвращаемое значение

В случае успешного выполнения дескриптор объекта контекста устройства; NULLв противном случае .

Замечания

Вы можете использовать дескриптор для вызова API Windows напрямую.

CDC::PaintRgn

Заполняет область, указанную pRgn с помощью текущей кисти.

BOOL PaintRgn(CRgn* pRgn);

Параметры

pRgn
Определяет регион, который нужно заполнить. Координаты для заданного региона указываются в логических единицах.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

CDC::PatBlt

Создает битовый шаблон на устройстве.

BOOL PatBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    DWORD dwRop);

Параметры

x
Указывает логическую координату x левого верхнего угла прямоугольника, который требуется получить шаблон.

y
Указывает логическую координату Y верхнего левого угла прямоугольника, который требуется получить шаблон.

nWidth
Задает ширину (в логических единицах) прямоугольника, который требуется получить шаблон.

nHeight
Указывает высоту (в логических единицах) прямоугольника, который требуется получить шаблон.

dwRop
Задает код операции растра. Коды операций растровых операций (ROPS) определяют, как GDI объединяет цвета в выходных операциях, включающих текущую кисть, возможное исходное растровое изображение и целевое растровое изображение. Этот параметр может принимать одно из следующих значений :

  • PATCOPY Копирует шаблон в точечный рисунок назначения.

  • PATINVERT Объединяет растровое изображение назначения с шаблоном с помощью логического оператора XOR (^).

  • DSTINVERT Инвертирует точечный рисунок назначения.

  • BLACKNESS Превращает все выходные данные черным.

  • WHITENESS Преобразует весь выходной белый цвет.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Шаблон — это сочетание выбранной кисти и шаблона, уже на устройстве. Код операции растра, указанный в dwRop определении способа объединения шаблонов. Операции растра, перечисленные для этой функции, представляют собой ограниченное подмножество полных 256 тернарных кодов операций растра; В частности, код растровой операции, ссылающийся на источник, нельзя использовать.

Не все контексты устройств поддерживают функцию PatBlt . Чтобы определить, поддерживается PatBltли контекст устройства, вызовите GetDeviceCaps функцию-член с индексом RASTERCAPS и проверьте возвращаемое значение флага RC_BITBLT .

CDC::Pie

Рисует круговую клиновую фигуру путем рисования эллиптической дуги, центр которой и две конечные точки объединяются линиями.

BOOL Pie(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Pie(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Параметры

x1
Задает координату x левого верхнего угла ограничивающего прямоугольника (в логических единицах).

y1
Задает координату y верхнего левого угла ограничивающего прямоугольника (в логических единицах).

x2
Задает координату x правого нижнего угла ограничивающего прямоугольника (в логических единицах).

y2
Указывает координату Y правого нижнего угла ограничивающего прямоугольника (в логических единицах).

x3
Задает координату x начальной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

y3
Задает координату y начальной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

x4
Задает координату x конечной точки arc (в логических единицах). Этой точке не нужно лежать точно на дуге.

y4
Задает координату y конечной точки дуги (в логических единицах). Этой точке не нужно лежать точно на дуге.

lpRect
Задает ограничивающий прямоугольник. Для этого параметра можно передать CRect объект или указатель на структуру RECT .

ptStart
Указывает начальную точку дуги. Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT CPoint или объект.

ptEnd
Указывает конечную точку дуги. Этой точке не нужно лежать точно на дуге. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Центр дуги — это центр ограничивающего прямоугольника, указанного x1в , y1x2и y2 (или поlpRect). Начальные и конечные точки дуги задаются x3, y3x4и y4 (или по ptStart иptEnd).

Дуга рисуется с выбранным пером, перемещаясь в направлении со счетчиком. Две другие линии извлекаются из каждой конечной точки в центр дуги. Круговая область заполняется текущей кистью. Если равно и равно, результатом является многоточие с одной линией от центра эллипса до точки (x3, y3) или (x4, y4).y4y3 x4 x3

Рисунок, рисуемый этой функцией, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1 Ширина и высота ограничивающего прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.

Пример

void CDCView::DrawPie(CDC *pDC)
{
   // Fill the client area with a simple pie chart. A
   // big blue slice covers 75% of the pie, from
   // 6 o'clock to 3 o'clock. This portion is filled
   // with blue and has a blue edge. The remaining 25%
   // is filled with a red, diagonal hatch and has
   // a red edge.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens and similar brushes.
   CPen penBlue, penRed;
   CBrush brushBlue, brushRed;
   CBrush *pOldBrush;
   CPen *pOldPen;

   brushBlue.CreateSolidBrush(RGB(0, 0, 255));
   brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen with a solid blue fill.

   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

   pDC->Pie(rectClient,
            CPoint(rectClient.right, rectClient.CenterPoint().y),
            CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw the remaining quarter slice from 6 o'clock
   // to 3 o'clock, counterclockwise, in a red pen with
   // the hatched brush.
   pDC->SelectObject(&penRed);
   pDC->SelectObject(&brushRed);

   // Same parameters, but reverse start and end points.
   pDC->Pie(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::PlayMetaFile

Воспроизводит содержимое указанного метафайла в контексте устройства.

BOOL PlayMetaFile(HMETAFILE hMF);

BOOL PlayMetaFile(
    HENHMETAFILE hEnhMetaFile,
    LPCRECT lpBounds);

Параметры

hMF
Определяет метафайл, который необходимо воспроизвести.

hEnhMetaFile
Определяет расширенный метафайл.

lpBounds
Указывает на RECT структуру или CRect объект, содержащий координаты ограничивающего прямоугольника, используемого для отображения рисунка. Координаты указываются в логических единицах.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Метафайл можно воспроизводить любое количество раз.

Вторая версия PlayMetaFile отображает рисунок, хранящийся в заданном метафайле расширенного формата. Когда приложение вызывает вторую версию, Windows использует кадр рисунка в заголовке расширенного PlayMetaFileметафайла для сопоставления рисунка с прямоугольником, на который указывает параметр lpBounds . (Это изображение может быть перекручено или повернуто путем задания преобразования мира на выходном устройстве перед вызовом PlayMetaFile.) Точки вдоль краев прямоугольника включаются в рисунок. Изображение расширенного метафайла можно обрезать, определив область вырезки на выходном устройстве перед воспроизведением расширенного метафайла.

Если расширенный метафайл содержит необязательную палитру, приложение может достичь согласованных цветов, настроив цветовую палитру на выходном устройстве перед вызовом второй версии PlayMetaFile. Чтобы получить необязательную палитру, используйте GetEnhMetaFilePaletteEntries функцию Windows. Расширенный метафайл можно внедрить в созданный расширенный метафайл, вызвав вторую версию PlayMetaFile и воспроизвести исходный расширенный метафайл в контекст устройства для нового расширенного метафайла.

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

CDC::PlgBlt

Выполняет передачу битов цветовых данных из указанного прямоугольника в контексте исходного устройства на указанную параллелограмму в заданном контексте устройства.

BOOL PlgBlt(
    LPPOINT lpPoint,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nWidth,
    int nHeight,
    CBitmap& maskBitmap,
    int xMask,
    int yMask);

Параметры

lpPoint
Указывает на массив из трех точек в логическом пространстве, который определяет три угла целевой параллелограммы. Верхний левый угол исходного прямоугольника сопоставляется с первой точкой в этом массиве, правым верхним углом второй точки в этом массиве и левым нижним углом к третьей точке. Правый нижний угол исходного прямоугольника сопоставляется с неявной четвертой точкой параллелограммы.

pSrcDC
Определяет контекст исходного устройства.

xSrc
Задает координату x в логических единицах левого верхнего угла исходного прямоугольника.

ySrc
Задает координату y в логических единицах верхнего левого угла исходного прямоугольника.

nWidth
Задает ширину в логических единицах исходного прямоугольника.

nHeight
Задает высоту в логических единицах исходного прямоугольника.

maskBitmap
Определяет необязательное однохромное растровое изображение, которое используется для маскирования цветов исходного прямоугольника.

xMask
Указывает координату x левого верхнего угла однохромного растрового изображения.

yMask
Указывает координату y левого верхнего угла растрового изображения монохромного.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

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

Четвертая вершина параллелограммы (D) определяется путем обработки первых трех точек (A, B и C) как векторов и вычислений D = B + C - A.

Если битовая маска существует, значение 1 в маске указывает, что исходный цвет пикселя должен быть скопирован в место назначения. Значение 0 в маске указывает, что цвет целевого пикселя не изменяется.

Если прямоугольник маски меньше исходного и целевого прямоугольников, функция реплицирует шаблон маски.

Преобразования масштабирования, перевода и отражения разрешены в контексте исходного устройства; однако преобразования поворота и ревного перебора не являются. Если растровое изображение маски не является однохромным, возникает ошибка. Режим растяжения для контекста конечного устройства используется для определения способа растяжения или сжатия пикселей, если это необходимо. При записи расширенного метафайла возникает ошибка, если контекст исходного устройства идентифицирует контекст устройства расширенного метафайла.

Координаты назначения преобразуются в зависимости от контекста устройства назначения; исходные координаты преобразуются в зависимости от контекста исходного устройства. Если преобразование источника имеет поворот или сбой, возвращается ошибка. Если прямоугольники назначения и источника не имеют одного и того же формата цвета, PlgBlt преобразует исходный прямоугольник в соответствие с целевым прямоугольником. Не все устройства поддерживаются PlgBlt. Дополнительные сведения см. в описании RC_BITBLT возможности растра в функции-члене CDC::GetDeviceCaps .

Если контексты исходного и целевого устройств представляют несовместимые устройства, PlgBlt возвращает ошибку.

CDC::PolyBezier

Рисует одну или несколько сплайнов Bzier.

BOOL PolyBezier(
    const POINT* lpPoints,
    int nCount);

Параметры

lpPoints
Указывает на массив POINT структур данных, содержащих конечные точки и контрольные точки сплайнов.

nCount
Указывает количество точек в массиве lpPoints . Это значение должно быть более трех раз, чем количество линий сплайнов, так как каждая строка Bzier требует двух контрольных точек и конечной точки, а начальная строка сплайна требует другой начальной точки.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция рисует кубическую линию Bzier с помощью конечных точек и точек управления, указанных параметром lpPoints . Первая сплайн рисуется с первой точки на четвертую точку с помощью второй и третьей точек в качестве контрольных точек. Каждая следующая строка сплайна в последовательности требует ровно трех дополнительных точек: конечная точка предыдущей сплайна используется в качестве отправной точки, следующие две точки последовательности являются контрольными точками, а третья — конечной точкой.

Текущая позиция не используется или обновляется функцией PolyBezier . Рисунок не заполнен. Эта функция рисует линии с помощью текущего пера.

CDC::PolyBezierTo

Рисует одну или несколько сплайнов Bzier.

BOOL PolyBezierTo(
    const POINT* lpPoints,
    int nCount);

Параметры

lpPoints
Указывает на массив POINT структур данных, содержащих конечные точки и контрольные точки.

nCount
Указывает количество точек в массиве lpPoints . Это значение должно быть в три раза больше, чем количество линий сплайнов, так как каждая строка Bzier требует двух контрольных точек и конечной точки.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция рисует кубическую линию Bzier с помощью точек управления, указанных параметром lpPoints . Первая строка сплайна извлекается из текущей позиции в третью точку с помощью первых двух точек в качестве контрольных точек. Для каждой последующей сплайн функции требуется ровно три пункта и использует конечную точку предыдущего сплайна в качестве отправной точки для следующей. PolyBezierTo перемещает текущую позицию в конечную точку последнего сплайна Bzier. Рисунок не заполнен. Эта функция рисует линии с помощью текущего пера.

Пример

Пример см. в примере CDC::BeginPath.

CDC::PolyDraw

Рисует набор сегментов линий и сплайнов Bzier.

BOOL PolyDraw(
    const POINT* lpPoints,
    const BYTE* lpTypes,
    int nCount);

Параметры

lpPoints
Указывает на массив POINT структур данных, содержащих конечные точки для каждого сегмента строки, конечных точек и точек управления для каждой сплайна Bzier.

lpTypes
Указывает на массив, указывающий, как используется каждая точка в массиве lpPoints . Значением может быть одно из следующих.

  • PT_MOVETO Указывает, что эта точка запускает разрознающую фигуру. Эта точка становится новой текущей позицией.

  • PT_LINETO Указывает, что линия должна быть получена из текущей позиции до этой точки, которая затем становится новой текущей позицией.

  • PT_BEZIERTO Указывает, что эта точка является контрольной точкой или конечной точкой для сплайна Bzier.

PT_BEZIERTO типы всегда происходят в наборах из трех. Текущая позиция определяет начальную точку для сплайна Bzier. Первые две PT_BEZIERTO точки — это контрольные точки, а третья PT_BEZIERTO — конечная точка. Конечная точка становится новой текущей позицией. Если нет трех последовательных PT_BEZIERTO точек, результаты ошибки.

PT_BEZIERTO Тип PT_LINETO или тип можно объединить со следующей константой с помощью побитового оператора OR, чтобы указать, что соответствующая точка является последней точкой на рисунке, и рисунок закрыт:

  • PT_CLOSEFIGURE Указывает, что рисунок автоматически закрывается после PT_LINETO завершения или PT_BEZIERTO типа для этой точки. Линия рисуется с этой точки до последней PT_MOVETO точки или MoveTo точки.

    Этот флаг сочетается с PT_LINETO типом строки или PT_BEZIERTO типом конечной точки для линии Bzier с помощью побитового оператора OR . Текущая позиция устанавливается в конечную точку закрывающей линии.

nCount
Указывает общее количество точек в lpPoints массиве, то же самое, что и количество байтов в массиве lpTypes .

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эту функцию можно использовать для рисования несвязанных цифр вместо последовательных вызовов CDC::MoveToи CDC::LineToCDC::PolyBezierTo функций-членов. Линии и линии рисуются с помощью текущего пера, и цифры не заполняются. Если активен путь, запущенный вызовом CDC::BeginPath функции-члена, PolyDraw добавляется в путь. Точки, содержащиеся в массиве lpPoints , и указывают lpTypes , является ли каждая точка частью CDC::MoveToоперации, а CDC::LineToтакже операцией CDC::BezierTo . Кроме того, можно закрыть цифры. Эта функция обновляет текущую позицию.

Пример

Пример см. в примере CDC::BeginPath.

CDC::Polygon

Рисует многоугольник, состоящий из двух или более точек (вершин), подключенных по линиям, с помощью текущего пера.

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

Параметры

lpPoints
Указывает на массив точек, указывающих вершины многоугольника. Каждая точка в массиве — это POINT структура или CPoint объект.

nCount
Указывает количество вершин в массиве.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Система автоматически закрывает многоугольник, при необходимости нарисовав линию от последней вершины к первой.

Текущий режим заполнения многоугольников можно получить или задать с помощью GetPolyFillMode функций-членов.SetPolyFillMode

Пример

void CDCView::DrawPolygon(CDC *pDC)
{
   // find the client area
   CRect rect;
   GetClientRect(rect);

   // draw with a thick blue pen
   CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
   CPen *pOldPen = pDC->SelectObject(&penBlue);

   // and a solid red brush
   CBrush brushRed(RGB(255, 0, 0));
   CBrush *pOldBrush = pDC->SelectObject(&brushRed);

   // Find the midpoints of the top, right, left, and bottom
   // of the client area. They will be the vertices of our polygon.
   CPoint pts[4];
   pts[0].x = rect.left + rect.Width() / 2;
   pts[0].y = rect.top;

   pts[1].x = rect.right;
   pts[1].y = rect.top + rect.Height() / 2;

   pts[2].x = pts[0].x;
   pts[2].y = rect.bottom;

   pts[3].x = rect.left;
   pts[3].y = pts[1].y;

   // Calling Polygon() on that array will draw three lines
   // between the points, as well as an additional line to
   // close the shape--from the last point to the first point
   // we specified.
   pDC->Polygon(pts, 4);

   // Put back the old objects.
   pDC->SelectObject(pOldPen);
   pDC->SelectObject(pOldBrush);
}

CDC::Polyline

Рисует набор сегментов линий, соединяющих точки, указанные lpPointsв .

BOOL Polyline(
    LPPOINT lpPoints,
    int nCount);

Параметры

lpPoints
Указывает на массив POINT структур или CPoint объектов, которые должны быть подключены.

nCount`
Указывает количество точек в массиве. Это значение должно быть не менее 2.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Линии рисуются из первой точки через последующие точки с помощью текущего пера. LineTo В отличие от функции-члена, Polyline функция не использует или не обновляет текущую позицию.

Дополнительные сведения см PolyLine . в пакете SDK для Windows.

CDC::PolylineTo

Рисует одну или несколько прямых линий.

BOOL PolylineTo(
    const POINT* lpPoints,
    int nCount);

Параметры

lpPoints
Указывает на массив POINT структур данных, содержащих вершины линии.

nCount
Указывает количество точек в массиве.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Линия извлекается из текущей позиции до первой точки, указанной lpPoints параметром с помощью текущего пера. Для каждой дополнительной строки функция извлекает из конечной точки предыдущей строки на следующую точку, указанную lpPoints. PolylineTo перемещает текущую позицию в конечную точку последней строки. Если сегменты линии, рисуемые этой функцией, образуют закрытую фигуру, рисунок не заполняется.

CDC::PolyPolygon

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

BOOL PolyPolygon(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount);

Параметры

lpPoints
Указывает на массив структур или CPoint объектов, определяющих POINT вершины многоугольников.

lpPolyCounts
Указывает на массив целых чисел, каждый из которых указывает количество точек в одном из многоугольников в массиве lpPoints .

nCount
Количество записей в массиве lpPolyCounts . Это число указывает количество многоугольников, которые необходимо нарисовать. Это значение должно быть не менее 2.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Многоугольники могут быть несвязанными или перекрывающимися.

Каждый многоугольник, указанный в вызове PolyPolygon функции, должен быть закрыт. В отличие от многоугольников, созданных Polygon функцией-членом, многоугольники, созданные PolyPolygon не закрываются автоматически.

Функция создает два или более многоугольников. Чтобы создать один многоугольник, приложение должно использовать функцию-член Polygon .

Текущий режим заполнения многоугольников можно получить или задать с помощью GetPolyFillMode функций-членов.SetPolyFillMode

CDC::PolyPolyline

Рисует несколько рядов сегментов подключенной линии.

BOOL PolyPolyline(
    const POINT* lpPoints,
    const DWORD* lpPolyPoints,
    int nCount);

Параметры

lpPoints
Указывает на массив структур, содержащих вершины полилайнов. Полилайны задаются последовательно.

lpPolyPoints
Указывает на массив переменных, указывающий количество точек в lpPoints массиве для соответствующего многоугольника. Каждая запись должна быть больше или равна 2.

nCount
Указывает общее количество счетчиков в массиве lpPolyPoints .

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Сегменты линий рисуются с помощью текущего пера. Цифры, сформированные сегментами, не заполняются. Текущая позиция не используется или обновляется этой функцией.

CDC::PtVisible

Определяет, находится ли данная точка в области вырезки контекста устройства.

virtual BOOL PtVisible(
    int x,
    int y) const;

BOOL PtVisible(POINT point) const;

Параметры

x
Указывает логическую координату x точки.

y
Задает логическую координату точки y.

point
Указывает точку для проверки логических координат. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Ненулевое значение, если указанная точка находится в регионе вырезки; в противном случае — 0.

CDC::QueryAbort

Вызывает функцию прерывания, SetAbortProc установленную функцией-членом для приложения печати, и запрашивает, следует ли завершить печать.

BOOL QueryAbort() const;

Возвращаемое значение

Возвращаемое значение ненулевое, если печать должна продолжаться или нет процедуры прерывания. Значение 0, если задание печати должно быть завершено. Возвращаемое значение предоставляется функцией прерывания.

CDC::RealizePalette

Сопоставляет записи из текущей логической палитры с системной палитрой.

UINT RealizePalette();

Возвращаемое значение

Указывает, сколько записей в логической палитре сопоставлено с различными записями в системной палитре. Это представляет количество записей, которые эта функция переназначалась для изменения в системной палитре, так как логическая палитра была реализована в последний раз.

Замечания

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

Если окно имеет фокус ввода и вызовы RealizePalette, Windows гарантирует, что окно будет отображать все запрошенные цвета, вплоть до максимального числа одновременно доступных на экране. Windows также отображает цвета, не найденные в палитре окна, сопоставляя их с доступными цветами.

Кроме того, Windows соответствует цветам, запрошенным неактивными окнами, которые вызывают функцию как можно ближе к доступным цветам. Это значительно уменьшает нежелательные изменения цветов, отображаемых в неактивных окнах.

CDC::Rectangle

Рисует прямоугольник с помощью текущего пера.

BOOL Rectangle(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Rectangle(LPCRECT lpRect);

Параметры

x1
Указывает координату x левого верхнего угла прямоугольника (в логических единицах).

y1
Задает координату y левого верхнего угла прямоугольника (в логических единицах).

x2
Задает координату x правого нижнего угла прямоугольника (в логических единицах).

y2
Указывает координату y правого нижнего угла прямоугольника (в логических единицах).

lpRect
Задает прямоугольник в логических единицах. Для этого параметра можно передать CRect объект или указатель на структуру RECT .

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Интерьер прямоугольника заполняется с помощью текущей кисти.

Прямоугольник расширяется до, но не включает, правые и нижние координаты. Это означает, что высота прямоугольника равна y2 - y1 ширине прямоугольника.x2 - x1 Ширина и высота прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.

Пример

void CDCView::DrawRectangle(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // draw a thick black rectangle filled with blue
   pDC->Rectangle(rect);

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::RectVisible

Определяет, находится ли любая часть заданного прямоугольника в области вырезки контекста отображения.

virtual BOOL RectVisible(LPCRECT lpRect) const;

Параметры

lpRect
Указывает на RECT структуру или CRect объект, содержащий логические координаты указанного прямоугольника.

Возвращаемое значение

Ненулевое значение, если какая-либо часть заданного прямоугольника находится в области вырезки; в противном случае — 0.

CDC::ReleaseAttribDC

Вызовите эту функцию-член, чтобы задать m_hAttribDC значение NULL.

virtual void ReleaseAttribDC();

Замечания

Это не приводит Detach к возникновению ошибки. К объекту подключен CDC только контекст выходного устройства, и его можно отсоединить.

CDC::ReleaseOutputDC

Вызовите эту функцию-член, чтобы задать для m_hDC элемента значение NULL.

virtual void ReleaseOutputDC();

Замечания

Эта функция-член не может вызываться при присоединении контекста выходного устройства к объекту CDC . Используйте функцию-член, Detach чтобы отключить контекст выходного устройства.

CDC::ResetDC

Вызовите эту функцию-член, чтобы обновить контекст устройства, завернутый CDC объектом.

BOOL ResetDC(const DEVMODE* lpDevMode);

Параметры

lpDevMode
Указатель на структуру Windows DEVMODE .

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Контекст устройства обновляется из сведений, указанных в структуре Windows DEVMODE . Эта функция-член сбрасывает только контекст устройства атрибута.

Приложение обычно использует ResetDC функцию-член, когда окно обрабатывает WM_DEVMODECHANGE сообщение. Эту функцию-член можно также использовать для изменения ориентации бумаги или бумажных корзин при печати документа.

Эту функцию-член нельзя использовать для изменения имени драйвера, имени устройства или выходного порта. Когда пользователь изменяет имя подключения к порту или устройств, необходимо удалить исходный контекст устройства и создать новый контекст устройства с новыми сведениями.

Прежде чем вызывать эту функцию-член, необходимо убедиться, что все объекты (кроме объектов акций), выбранные в контексте устройства, были выбраны.

CDC::RestoreDC

Восстанавливает контекст устройства до предыдущего состояния, определяемого nSavedDC.

virtual BOOL RestoreDC(int nSavedDC);

Параметры

nSavedDC
Указывает контекст устройства, который требуется восстановить. Это может быть значение, возвращаемое предыдущим SaveDC вызовом функции. Если nSavedDC значение равно -1, то восстанавливается последний сохраненный контекст устройства.

Возвращаемое значение

Ненулевое значение, если указанный контекст был восстановлен; в противном случае — 0.

Замечания

RestoreDC восстанавливает контекст устройства путем всплывающих сведений о состоянии из стека, созданного предыдущими вызовами SaveDC функции-члена.

Стек может содержать сведения о состоянии для нескольких контекстов устройства. Если контекст, указанный nSavedDC не в верхней части стека, удаляет все сведения о состоянии между контекстом устройства, RestoreDC указанным nSavedDC в верхней части стека. Удаленная информация потеряна.

CDC::RoundRect

Рисует прямоугольник с закругленными углами с помощью текущего пера.

BOOL RoundRect(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

BOOL RoundRect(
    LPCRECT lpRect,
    POINT point);

Параметры

x1
Указывает координату x левого верхнего угла прямоугольника (в логических единицах).

y1
Задает координату y левого верхнего угла прямоугольника (в логических единицах).

x2
Задает координату x правого нижнего угла прямоугольника (в логических единицах).

y2
Указывает координату y правого нижнего угла прямоугольника (в логических единицах).

x3
Задает ширину многоточия, используемой для рисования округлых углов (в логических единицах).

y3
Задает высоту многоточия, используемого для рисования округлых углов (в логических единицах).

lpRect
Указывает ограничивающий прямоугольник в логических единицах. Для этого параметра можно передать CRect объект или указатель на структуру RECT .

point
Координата x point указывает ширину многоточия для рисования округлых углов (в логических единицах). Координата y point указывает высоту многоточия для рисования округлых углов (в логических единицах). Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Интерьер прямоугольника заполняется с помощью текущей кисти.

Рисунок, который рисует эта функция, расширяется до, но не включает правые и нижние координаты. Это означает, что высота фигуры и y2 - y1 ширина фигуры .x2 - x1 Высота и ширина ограничивающего прямоугольника должны быть больше 2 единиц и меньше 32 767 единиц.

Пример

void CDCView::DrawRoundRect(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // Draw a thick black rectangle filled with blue
   // corners rounded at a 17-unit radius. Note that
   // a radius of three or less is not noticeable because
   // the pen is three units wide.
   pDC->RoundRect(rect, CPoint(17, 17));

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::SaveDC

Сохраняет текущее состояние контекста устройства путем копирования сведений о состоянии (например, вырезки области, выбранных объектов и режима сопоставления) в стек контекста, поддерживаемый Windows.

virtual int SaveDC();

Возвращаемое значение

Целое число, определяющее сохраненный контекст устройства. Если возникает ошибка, это значение 0. Это возвращаемое значение можно использовать для восстановления контекста устройства путем вызова RestoreDC.

Замечания

С помощью сохраненного контекста устройства можно восстановить.RestoreDC

SaveDC можно использовать любое количество раз, чтобы сохранить любое количество состояний контекста устройства.

CDC::ScaleViewportExt

Изменяет экстенты окна просмотра относительно текущих значений.

virtual CSize ScaleViewportExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

Параметры

xNum
Указывает объем, на который умножается текущий x-экстент.

xDenom
Указывает объем, по которому можно разделить результат умножения текущего xNum x-экстента на значение параметра.

yNum
Указывает объем, на который умножается текущая степень y.

yDenom
Указывает объем, по которому следует разделить результат умножения текущего yNum y-экстента на значение параметра.

Возвращаемое значение

Предыдущие экстенты представления (в единицах устройства) в качестве CSize объекта.

Замечания

Формулы записываются следующим образом:

xNewVE = ( xOldVE * xNum ) / xDenom

yNewVE = ( yOldVE * yNum ) / yDenom

Новые экстенты представления вычисляются путем умножения текущих экстентов на заданный числитель, а затем деления по заданному знаменателю.

CDC::ScaleWindowExt

Изменяет экстенты окна относительно текущих значений.

virtual CSize ScaleWindowExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

Параметры

xNum
Указывает объем, на который умножается текущий x-экстент.

xDenom
Указывает объем, по которому можно разделить результат умножения текущего xNum x-экстента на значение параметра.

yNum
Указывает объем, на который умножается текущая степень y.

yDenom
Указывает объем, по которому следует разделить результат умножения текущего yNum y-экстента на значение параметра.

Возвращаемое значение

Предыдущие экстенты окна (в логических единицах) в качестве CSize объекта.

Замечания

Формулы записываются следующим образом:

xNewWE = ( xOldWE * xNum ) / xDenom

yNewWE = ( yOldWE * yNum ) / yDenom

Новые экстенты окна вычисляются путем умножения текущих экстентов на заданный числитель, а затем деления на заданный знаменатель.

CDC::ScrollDC

Прокручивает прямоугольник битов по горизонтали и по вертикали.

BOOL ScrollDC(
    int dx,
    int dy,
    LPCRECT lpRectScroll,
    LPCRECT lpRectClip,
    CRgn* pRgnUpdate,
    LPRECT lpRectUpdate);

Параметры

dx
Указывает количество горизонтальных единиц прокрутки.

dy
Указывает количество единиц вертикальной прокрутки.

lpRectScroll
Указывает на RECT структуру или CRect объект, содержащий координаты прямоугольника прокрутки.

lpRectClip
Указывает на RECT структуру или CRect объект, содержащий координаты прямоугольника обрезки. Если этот прямоугольник меньше исходного, на который указывает lpRectScroll, прокрутка происходит только в меньшем прямоугольнике.

pRgnUpdate
Определяет регион, обнаруженный процессом прокрутки. Функция ScrollDC определяет этот регион; это не обязательно прямоугольник.

lpRectUpdate
Указывает на RECT структуру или CRect объект, получающий координаты прямоугольника, ограничивающего область обновления прокрутки. Это самая большая прямоугольная область, требующая переопределений. Значения в структуре или объекте, когда функция возвращается в клиентских координатах, независимо от режима сопоставления для заданного контекста устройства.

Возвращаемое значение

Ненулевое значение, если выполняется прокрутка; в противном случае — 0.

Замечания

Если lpRectUpdate это NULLтак, Windows не вычисляет прямоугольник обновления. Если оба pRgnUpdate и lpRectUpdate есть NULL, Windows не вычисляет регион обновления. Если pRgnUpdate это не NULLтак, Windows предполагает, что он содержит допустимый указатель на регион, обнаруженный процессом прокрутки (определяется ScrollDC функцией-членом). Регион обновления, возвращенный в lpRectUpdate , может быть передан CWnd::InvalidateRgn в случае необходимости.

Приложение должно использовать ScrollWindow функцию-член класса CWnd , если необходимо прокрутить всю клиентскую область окна. В противном случае он должен использовать ScrollDC.

CDC::SelectClipPath

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

BOOL SelectClipPath(int nMode);

Параметры

nMode
Указывает способ использования пути. Допустимы следующие значения:

  • RGN_AND Новый регион вырезки включает пересечение (перекрывающиеся области) текущей области вырезки и текущего пути.

  • RGN_COPY Новый регион вырезки — это текущий путь.

  • RGN_DIFF Новый регион вырезки включает в себя области текущего вырезки, а те из текущего пути исключены.

  • RGN_OR Новый регион вырезки включает объединение (объединенные области) текущего региона вырезки и текущего пути.

  • RGN_XOR Новый регион вырезки включает объединение текущего региона вырезки и текущего пути, но без перекрывающихся областей.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Контекст устройства должен содержать закрытый путь.

CDC::SelectClipRgn

Выбирает заданный регион в качестве текущей области вырезки для контекста устройства.

int SelectClipRgn(CRgn* pRgn);

int SelectClipRgn(
    CRgn* pRgn,
    int nMode);

Параметры

pRgn
Определяет выбранный регион.

  • Для первой версии этой функции, если это значение NULLимеет значение, выбрана вся клиентская область и выходные данные по-прежнему обрезаются в окне.

  • Для второй версии этой функции этот дескриптор может быть NULL только в том случае, если RGN_COPY указан режим.

nMode
Указывает операцию, выполняемую. Это должно быть одно из следующих значений:

  • RGN_AND Новый регион вырезки объединяет перекрывающиеся области текущего обрезки и регион, pRgnопределенный.

  • RGN_COPY Новый регион вырезки — это копия региона, определяемого pRgn. Это функция идентична первой версии SelectClipRgn. Если регион определен, pRgn NULLновый регион вырезки становится областью вырезки по умолчанию (пустой регион).

  • RGN_DIFF Новый регион вырезки объединяет области текущего обрезки с этими областями, исключенными из региона, определяемого pRgn.

  • RGN_OR Новый регион вырезки объединяет текущий регион вырезки и регион, определенный pRgn.

  • RGN_XOR Новый регион вырезки объединяет текущий регион вырезки и регион, pRgn определенный, но исключает любые перекрывающиеся области.

Возвращаемое значение

Тип региона. В качестве такой точки может выступать любой из следующих вариантов:

  • COMPLEXREGION Новый регион вырезки имеет перекрывающиеся границы.

  • ERROR Контекст устройства или регион недопустимы.

  • NULLREGION Новая область вырезки пуста.

  • SIMPLEREGION Новый регион вырезки не имеет перекрывающихся границ.

Замечания

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

Функция предполагает, что координаты для данного региона указаны в единицах устройства. Некоторые устройства принтера поддерживают вывод текста с более высоким разрешением, чем графические выходные данные, чтобы сохранить точность, необходимую для выражения текстовых метрик. Эти устройства сообщают об единицах устройства с более высоким разрешением, то есть в текстовых единицах. Затем эти устройства масштабируют координаты для графики, чтобы несколько единиц устройств сопоставлялись только с 1 графическим блоком. Всегда следует вызывать функцию SelectClipRgn с помощью текстовых единиц.

Приложения, которые должны принимать масштабирование графических объектов в GDI, могут использовать GETSCALINGFACTOR экран принтера для определения коэффициента масштабирования. Этот коэффициент масштабирования влияет на вырезку. Если область используется для клипа графики, GDI делит координаты на коэффициент масштабирования. Если область используется для обрезки текста, GDI не корректирует масштабирование. Коэффициент масштабирования 1 приводит к деления координат на 2; коэффициент масштабирования 2 приводит к деления координатам на 4; и т. д.

CDC::SelectObject

Выбирает объект в контексте устройства.

CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);

Параметры

pPen
Указатель на выбранный CPen объект.

pBrush
Указатель на выбранный CBrush объект.

pFont
Указатель на выбранный CFont объект.

pBitmap
Указатель на выбранный CBitmap объект.

pRgn
Указатель на выбранный CRgn объект.

pObject
Указатель на выбранный CGdiObject объект.

Возвращаемое значение

Указатель на замещаемый объект. Это указатель на объект одного из классов, производных от CGdiObject, например CPen, в зависимости от используемой версии функции. Возвращаемое значение имеет значение NULL , если возникла ошибка. Эта функция может вернуть указатель на временный объект. Этот временный объект действителен только во время обработки одного сообщения Windows. Дополнительные сведения см. в разделе CGdiObject::FromHandle.

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

  • COMPLEXREGION Новый регион вырезки имеет перекрывающиеся границы.

  • ERROR Контекст устройства или регион недопустимы.

  • NULLREGION Новая область вырезки пуста.

  • SIMPLEREGION Новый регион вырезки не имеет перекрывающихся границ.

Замечания

Класс CDC предоставляет пять версий, специализированных для определенных типов объектов GDI, включая ручки, кисти, шрифты, растровые изображения и регионы. Только что выбранный объект заменяет предыдущий объект того же типа. Например, если pObject общая версия SelectObject указывает на CPen объект, функция заменяет текущее перо пером, указанным.pObject

Приложение может выбрать растровое изображение только в контекстах устройства памяти и в один контекст устройства памяти одновременно. Формат растрового изображения должен быть монохромным или совместимым с контекстом устройства; Если это не так, SelectObject возвращает ошибку.

Для Windows 3.1 и более поздних версий функция возвращает то же значение, SelectObject которое используется в метафайле или нет. В предыдущих версиях Windows SelectObject возвращает ненулевое значение для успешного выполнения и 0 для сбоя при использовании в метафайле.

CDC::SelectPalette

Выбирает логическую палитру, указанную pPalette в качестве выбранного объекта палитры контекста устройства.

CPalette* SelectPalette(
    CPalette* pPalette,
    BOOL bForceBackground);

Параметры

pPalette
Определяет выбранную логическую палитру. Эта палитра уже должна быть создана с CPalette помощью функции-члена CreatePalette.

bForceBackground
Указывает, вынуждена ли логическая палитра быть фоновой палитрой. Если bForceBackground ненулевое значение, выбранная палитра всегда является фоновой палитрой, независимо от того, имеет ли окно фокус ввода. Если bForceBackground значение равно 0, а контекст устройства присоединен к окну, логическая палитра — это палитра переднего плана, когда окно имеет фокус ввода.

Возвращаемое значение

Указатель на объект, определяющий CPalette логическую палитру, замененную палитрой, указанной .pPalette Это если NULL возникла ошибка.

Замечания

Новая палитра становится объектом палитры, используемым GDI для управления цветами, отображаемыми в контексте устройства, и заменяет предыдущую палитру.

Приложение может выбрать логическую палитру в несколько контекстов устройства. Однако изменения в логической палитре влияют на все контексты устройства, для которых он выбран. Если приложение выбирает палитру в нескольких контекстах устройства, контексты устройств должны принадлежать одному физическому устройству.

CDC::SelectStockObject

Выбирает объект, соответствующий CGdiObject одному из предопределенных стандартных перьев, кистей или шрифтов.

virtual CGdiObject* SelectStockObject(int nIndex);

Параметры

nIndex
Указывает тип требуемого объекта акций. Может иметь одно из следующих значений.

  • BLACK_BRUSH Черная кисть.

  • DKGRAY_BRUSH Темно-серая кисть.

  • GRAY_BRUSH Серая кисть.

  • HOLLOW_BRUSH Полая кисть.

  • LTGRAY_BRUSH Светло-серая кисть.

  • NULL_BRUSH Кисть NULL.

  • WHITE_BRUSH Белая кисть.

  • BLACK_PEN Черное перо.

  • NULL_PEN Пустое перо.

  • WHITE_PEN Белое перо.

  • ANSI_FIXED_FONT Фиксированный шрифт системы ANSI.

  • ANSI_VAR_FONT Шрифт системы переменных ANSI.

  • DEVICE_DEFAULT_FONT Шрифт, зависящий от устройства.

  • OEM_FIXED_FONT Фиксированный шрифт, зависящий от OEM.

  • SYSTEM_FONT Системный шрифт. По умолчанию Windows использует системный шрифт для рисования меню, элементов управления диалоговым окном и другого текста. Однако лучше не полагаться SYSTEM_FONT на получение шрифта, используемого диалогами и окнами. Вместо этого используйте SystemParametersInfo функцию с параметром SPI_GETNONCLIENTMETRICS для получения текущего шрифта. SystemParametersInfo учитывает текущую тему и предоставляет сведения о шрифте для подписей, меню и диалоговых окон сообщений.

  • SYSTEM_FIXED_FONT Шрифт системы фиксированной ширины, используемый в Windows до версии 3.0. Этот объект доступен для совместимости с более ранними версиями Windows.

  • DEFAULT_PALETTE Цветовая палитра по умолчанию. Эта палитра состоит из 20 статических цветов в системной палитре.

Возвращаемое значение

Указатель на CGdiObject объект, который был заменен, если функция выполнена успешно. Фактический объект, на который указывает, является объектом CPen, CBrushили CFont объектом. Если вызов не выполнен, возвращаемое значение равно NULL.

CDC::SetAbortProc

Устанавливает процедуру прерывания задания печати.

int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));

Параметры

lpfn
Указатель на функцию прерывания для установки в качестве процедуры прерывания. Дополнительные сведения о функции обратного вызова см. в разделе "Функция обратного вызова".CDC::SetAbortProc

Возвращаемое значение

Указывает результат SetAbortProc функции. Некоторые из следующих значений являются более вероятными, чем другие, но все это возможно.

  • SP_ERROR Общая ошибка.

  • SP_OUTOFDISK Недостаточно места на диске в настоящее время доступно для spooling, и больше места не станет доступным.

  • SP_OUTOFMEMORY Недостаточно памяти доступно для spooling.

  • SP_USERABORT Пользователь завершил задание с помощью диспетчера печати.

Замечания

Если приложение должно разрешить отмену задания печати во время spooling, оно должно задать функцию прерывания перед запуском задания печати с StartDoc функцией-членом. Диспетчер печати вызывает функцию прерывания во время spooling, чтобы разрешить приложению отменить задание печати или обработать условия вне дискового пространства. Если функция прерывания не задана, задание печати завершится ошибкой, если недостаточно места на диске для spooling.

Функции Microsoft Visual C++ упрощают создание функции обратного вызова, переданной SetAbortProcв . Адрес, переданный EnumObjects функции-члену, — это указатель на функцию, экспортированную с __declspec(dllexport) помощью соглашения о вызовах __stdcall .

Кроме того, вам не нужно экспортировать имя функции в инструкции EXPORTS в файле определения модуля приложения. Вместо этого можно использовать EXPORT модификатор функции, как и в

BOOL CALLBACK EXPORT AFunction( HDC, int );

Чтобы компилятор выдает правильную запись экспорта для экспорта по имени без псевдонима. Это работает для большинства потребностей. Для некоторых особых случаев, таких как экспорт функции путем порядкового или псевдонима экспорта, вам по-прежнему необходимо использовать EXPORTS инструкцию в файле определения модуля.

Интерфейсы регистрации обратного вызова теперь являются типобезопасны (необходимо передать указатель функции, указывающий на правильную функцию для конкретного обратного вызова).

Все функции обратного вызова должны перехватывать исключения Microsoft Foundation перед возвращением в Windows, так как исключения нельзя создавать через границы обратного вызова. Дополнительные сведения об исключениях см. в статье "Исключения".

CDC::SetArcDirection

Задает направление рисования, которое будет использоваться для функций дуги и прямоугольника.

int SetArcDirection(int nArcDirection);

Параметры

nArcDirection
Задает новое направление дуги. Этот параметр может иметь одно из следующих значений:

  • AD_COUNTERCLOCKWISE Цифры, нарисованные против часовой стрелки.

  • AD_CLOCKWISE Рисуется по часовой стрелке.

Возвращаемое значение

Указывает старое направление дуги, если это успешно; в противном случае — 0.

Замечания

Направление по умолчанию — по счетчику. Функция SetArcDirection указывает направление, в котором выполняются следующие функции:

Arc Круговая
ArcTo Rectangle
Chord RoundRect
Ellipse

CDC::SetAttribDC

Вызовите эту функцию, чтобы задать контекст устройства атрибута. m_hAttribDC

virtual void SetAttribDC(HDC hDC);

Параметры

hDC
Контекст устройства Windows.

Замечания

Эта функция-член не присоединяет контекст устройства к объекту CDC . К объекту подключен CDC только контекст выходного устройства.

CDC::SetBkColor

Задает текущий цвет фона указанным цветом.

virtual COLORREF SetBkColor(COLORREF crColor);

Параметры

crColor
Задает новый цвет фона.

Возвращаемое значение

Предыдущий цвет фона в качестве значения цвета RGB. Если возникает ошибка, возвращаемое значение 0x80000000.

Замечания

Если фоновый режим имеет значение OPAQUE, система использует цвет фона для заполнения пробелов в стилях, пробелов между штриховками в кисти и фоном в ячейках символов. Система также использует цвет фона при преобразовании растровых изображений между контекстами цветов и монохромных устройств.

Если устройство не может отобразить указанный цвет, система задает цвет фона ближайшим физическим цветом.

CDC::SetBkMode

Задает фоновый режим.

int SetBkMode(int nBkMode);

Параметры

nBkMode
Указывает режим, который нужно задать. Этот параметр может иметь одно из следующих значений:

  • OPAQUE Фон заполняется текущим цветом фона перед текстом, штриховкой кистью или пером. Это фоновый режим по умолчанию.

  • TRANSPARENT Фон не изменяется до рисования.

Возвращаемое значение

Предыдущий фоновый режим.

Замечания

В фоновом режиме определяется, удаляет ли система существующие цвета фона на поверхности рисования перед рисованием текста, штриховками или любым стилем пера, который не является сплошной линией.

Пример

Пример см. в примере CWnd::OnCtlColor.

CDC::SetBoundsRect

Управляет накоплением ограничивающих прямоугольников для указанного контекста устройства.

UINT SetBoundsRect(
    LPCRECT lpRectBounds,
    UINT flags);

Параметры

lpRectBounds
Указывает на структуру RECT или CRect объект, который используется для задания ограничивающего прямоугольника. Измерения прямоугольника задаются в логических координатах. Этот параметр может иметь значение NULL.

flags
Указывает, как будет сочетаться новый прямоугольник с накопленным прямоугольником. Этот параметр может быть сочетанием следующих значений:

  • DCB_ACCUMULATE Добавьте прямоугольник, заданный ограничивающим lpRectBounds прямоугольником (с помощью операции прямоугольника-объединения).

  • DCB_DISABLE Отключите накопление границ.

  • DCB_ENABLE Включите накопление границ. (Параметр по умолчанию для накопления границ отключен.)

Возвращаемое значение

Текущее состояние ограничивающего прямоугольника, если функция выполнена успешно. Например flags, возвращаемое значение может быть сочетанием значений DCB_ :

  • DCB_ACCUMULATE Ограничивающий прямоугольник не пуст. Это значение всегда будет задано.

  • DCB_DISABLE Отключается накопление границ.

  • DCB_ENABLE Накопление границ включено.

Замечания

Windows может поддерживать ограничивающий прямоугольник для всех операций рисования. Этот прямоугольник можно запрашивать и сбрасывать приложением. Границы рисования полезны для недопустимых кэшей растровых изображений.

CDC::SetBrushOrg

Указывает источник, который GDI назначит следующей кисти, которую приложение выбирает в контексте устройства.

CPoint SetBrushOrg(
    int x,
    int y);

CPoint SetBrushOrg(POINT point);

Параметры

x
Задает координату x (в единицах устройства) нового источника. Это значение должно находиться в диапазоне 0–7.

y
Задает координату y (в единицах устройства) нового источника. Это значение должно находиться в диапазоне 0–7.

point
Задает координаты x-и y нового источника. Каждое значение должно находиться в диапазоне от 0 до 7. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Предыдущий источник кисти в единицах устройства.

Замечания

Координаты по умолчанию для источника кисти :0, 0). Чтобы изменить источник кисти, вызовите UnrealizeObject функцию для CBrush объекта, вызовите SetBrushOrgи вызовите SelectObject функцию-член, чтобы выбрать кисть в контексте устройства.

Не используйте SetBrushOrg с объектами акций CBrush .

CDC::SetColorAdjustment

Задает значения корректировки цвета для контекста устройства с помощью указанных значений.

BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);

Параметры

lpColorAdjust
Указывает на структуру COLORADJUSTMENT данных, содержащую значения корректировки цвета.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Значения корректировки цвета используются для настройки входного цвета исходного растрового изображения для вызовов CDC::StretchBlt функции-члена при HALFTONE установке режима.

CDC::SetDCBrushColor

Задает текущий цвет кисти контекста устройства (DC) указанным значением цвета.

COLORREF SetDCBrushColor(COLORREF crColor);

Параметры

crColor
Задает новый цвет кисти.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение указывает предыдущий цвет кисти контроллера домена в качестве COLORREF значения.

Если функция завершается ошибкой, возвращается CLR_INVALIDзначение.

Замечания

Этот метод эмулирует функциональные возможности функции функции SetDCBrushColor, как описано в пакете SDK для Windows.

CDC::SetDCPenColor

Задает текущий цвет пера (DC) для заданного значения цвета.

COLORREF SetDCPenColor(COLORREF crColor);

Параметры

crColor
Задает новый цвет пера.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция-член использует функцию SetDCPenColorWin32, как описано в пакете SDK для Windows.

CDC::SetGraphicsMode

Задает графический режим для указанного контекста устройства.

int SetGraphicsMode(int iMode);

Параметры

iMode
Задает графический режим. Список значений, которые может принимать этот параметр, см. в разделе SetGraphicsMode.

Возвращаемое значение

Возвращает старый графический режим при успешном выполнении.

Возвращает значение 0 при сбое. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Этот метод упаковывает функцию SetGraphicsModeGDI Windows.

CDC::SetLayout

Вызовите эту функцию-член, чтобы изменить макет текста и графики для контекста устройства справа налево, стандартный макет для таких культур, как арабский и иврит.

DWORD SetLayout(DWORD dwLayout);

Параметры

dwLayout
Макет контекста устройства и флаги элемента управления растровым изображением. Это может быть сочетание следующих значений.

Значение Значение
LAYOUT_BITMAPORIENTATIONPRESERVED Отключает любое отражение для вызовов CDC::BitBlt и CDC::StretchBlt.
LAYOUT_RTL Задает горизонтальный макет по умолчанию справа налево.
LAYOUT_LTR Задает макет по умолчанию слева направо.

Возвращаемое значение

При успешном выполнении предыдущего макета контекста устройства.

В случае неудачи GDI_ERROR. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Как правило, вы не вызовете SetLayout окно. Вместо этого вы управляете макетом справа налево в окне, задав расширенные стили окон, WS_EX_RTLREADINGнапример. Контекст устройства, например принтер или метафайл, не наследует этот макет. Единственным способом задать контекст устройства для макета справа налево является вызов SetLayout.

При вызове SetLayout(LAYOUT_RTL)SetLayout автоматически измените режим MM_ISOTROPICсопоставления на . В результате последующий вызов GetMapMode возвращается MM_ISOTROPIC вместо MM_TEXT.

В некоторых случаях, например с большим количеством растровых изображений, может потребоваться сохранить макет слева направо. В таких случаях отрисовка изображения путем вызова BitBlt или StretchBltзадания флага элемента управления растровым изображениемLAYOUT_BITMAPORIENTATIONPRESERVED.dwLayout

После изменения макета с флагом LAYOUT_RTL флаги флаги обычно указываются вправо или влево. Чтобы избежать путаницы, может потребоваться определить альтернативные имена стандартных флагов. Список предлагаемых альтернативных имен флагов см SetLayout . в пакете SDK для Windows.

CDC::SetMapMode

Задает режим сопоставления.

virtual int SetMapMode(int nMapMode);

Параметры

nMapMode
Задает новый режим сопоставления. Это может быть любое из следующих значений:

  • MM_ANISOTROPIC Логические единицы преобразуются в произвольные единицы с произвольным масштабированием осей. Настройка режима MM_ANISOTROPIC сопоставления не изменяет текущие параметры окна или окна просмотра. Чтобы изменить единицы, ориентацию и масштабирование, вызовите SetWindowExt функции и SetViewportExt функции-члены.

  • MM_HIENGLISH Каждая логическая единица преобразуется в 0,001 дюйма. Положительный x — справа; положительный y вверх.

  • MM_HIMETRIC Каждая логическая единица преобразуется в 0,01 миллиметра. Положительный x — справа; положительный y вверх.

  • MM_ISOTROPIC Логические единицы преобразуются в произвольные единицы с равномасштабными осями; То есть 1 единица вдоль оси x равна 1 единице вдоль оси y. SetWindowExt SetViewportExt Используйте функции-члены, чтобы указать нужные единицы и ориентацию осей. GDI вносит корректировки по мере необходимости, чтобы гарантировать, что единицы x и y остаются одинаковыми.

  • MM_LOENGLISH Каждая логическая единица преобразуется в 0,01 дюйма. Положительный x — справа; положительный y вверх.

  • MM_LOMETRIC Каждая логическая единица преобразуется в 0,1 миллиметра. Положительный x — справа; положительный y вверх.

  • MM_TEXT Каждая логическая единица преобразуется в 1 пиксель устройства. Положительный x — справа; положительный y вниз.

  • MM_TWIPS Каждая логическая единица преобразуется в 1/20 точки. (Так как точка составляет 1/72 дюйма, twip составляет 1/1440 дюйма.) Положительный x — справа; положительный y вверх.

Возвращаемое значение

Предыдущий режим сопоставления.

Замечания

В режиме сопоставления определяется единица измерения, используемая для преобразования логических единиц в единицы устройства; Он также определяет ориентацию x-и y-осей устройства. GDI использует режим сопоставления для преобразования логических координат в соответствующие координаты устройства. Режим MM_TEXT позволяет приложениям работать в пикселях устройства, где 1 единица равна 1 пикселям. Физический размер пикселя зависит от устройства к устройству.

Режимы MM_HIENGLISH, MM_HIMETRIC, и MM_LOENGLISHMM_LOMETRICMM_TWIPS режимы полезны для приложений, которые должны рисовать в физически значимых единицах (например, дюймах или миллиметрах). Режим MM_ISOTROPIC обеспечивает соотношение пропорций 1:1, которое полезно, если важно сохранить точную форму изображения. Режим MM_ANISOTROPIC позволяет независимо настраивать координаты x и y.

Примечание.

При вызове SetLayout изменения контроллера домена (контекст устройства) на правый на левый макет SetLayout автоматически изменяет режим MM_ISOTROPICсопоставления.

Пример

Пример см. в примере CView::OnPrepareDC.

CDC::SetMapperFlags

Изменяет метод, используемый картой шрифта при преобразовании логического шрифта в физический шрифт.

DWORD SetMapperFlags(DWORD dwFlag);

Параметры

dwFlag
Указывает, пытается ли карта шрифта соответствовать высоте и ширине шрифта устройству. Если это значение равно ASPECT_FILTERING, средство сопоставления выбирает только шрифты, чей x-аспект и y-аспект точно совпадают с шрифтами указанного устройства.

Возвращаемое значение

Предыдущее значение флага сопоставления шрифтов.

Замечания

Приложение может использовать SetMapperFlags для того, чтобы средство сопоставления шрифтов пыталось выбрать только физический шрифт, который точно соответствует пропорции указанного устройства.

Приложение, использующее только растровые шрифты, может использовать SetMapperFlags функцию, чтобы убедиться, что шрифт, выбранный картой шрифта, является привлекательным и читаемым на указанном устройстве. Приложения, использующие масштабируемые шрифты (TrueType), обычно не используются SetMapperFlags.

Если физический шрифт не имеет пропорций, соответствующий спецификации в логическом шрифте, GDI выбирает новое соотношение аспектов и выбирает шрифт, соответствующий этому новому пропорции.

CDC::SetMiterLimit

Задает ограничение длины соединений miter для контекста устройства.

BOOL SetMiterLimit(float fMiterLimit);

Параметры

fMiterLimit
Задает новое ограничение miter для контекста устройства.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Длина мизера определяется как расстояние от пересечения стен линии внутри соединения к пересечению стен линии на стороне соединения. Ограничение митера — это максимально допустимое соотношение длины мизера к ширине линии. Значение по умолчанию — 10,0.

CDC::SetOutputDC

Вызовите эту функцию-член, чтобы задать контекст выходного устройства. m_hDC

virtual void SetOutputDC(HDC hDC);

Параметры

hDC
Контекст устройства Windows.

Замечания

Эта функция-член может вызываться только в том случае, если контекст устройства не был подключен к объекту CDC . Эта функция-член задает m_hDC , но не присоединяет контекст устройства к объекту CDC .

CDC::SetPixel

Задает пиксель в точке, указанной в ближайшем приближении цвета, указанного crColorв .

COLORREF SetPixel(
    int x,
    int y,
    COLORREF crColor);

COLORREF SetPixel(
    POINT point,
    COLORREF crColor);

Параметры

x
Указывает логическую координату x для заданной точки.

y
Указывает логическую координату точки, заданной.

crColor
COLORREF Значение RGB, указывающее цвет, используемый для рисования точки. Сведения об этом значении см COLORREF . в пакете SDK для Windows.

point
Указывает логические координаты x-и y для заданной точки. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Значение RGB для цвета, нарисованного точкой. Это значение может отличаться от указанного, если crColor используется приближение этого цвета. Если функция завершается ошибкой (если точка находится за пределами области вырезки), возвращаемое значение равно -1.

Замечания

Точка должна находиться в регионе вырезки. Если точка не в регионе вырезки, функция ничего не делает.

Не все устройства поддерживают функцию SetPixel. Чтобы определить, поддерживает SetPixelли устройство, вызовите GetDeviceCaps функцию-член с индексом RASTERCAPS и проверьте возвращаемое значение флага RC_BITBLT .

CDC::SetPixelV

Задает пиксель в указанных координатах ближайшим приближением указанного цвета.

BOOL SetPixelV(
    int x,
    int y,
    COLORREF crColor);

BOOL SetPixelV(
    POINT point,
    COLORREF crColor);

Параметры

x
Указывает координату x в логических единицах заданной точки.

y
Задает координату y в логических единицах заданной точки.

crColor
Указывает цвет, используемый для рисования точки.

point
Указывает логические координаты x-и y для заданной точки. Можно передать структуру POINT данных или CPoint объект для этого параметра.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Точка должна находиться как в области вырезки, так и в видимой части поверхности устройства. Не все устройства поддерживают функцию-член. Дополнительные сведения см RC_BITBLT . в функции-члене CDC::GetDeviceCaps . SetPixelV быстрее, чем SetPixel из-за того, что он не должен возвращать значение цвета окрашенной точки.

CDC::SetPolyFillMode

Задает режим многоугольника.

int SetPolyFillMode(int nPolyFillMode);

Параметры

nPolyFillMode
Задает новый режим заполнения. Это значение может быть либо ALTERNATE либо WINDING. Задан режим по умолчанию в Windows ALTERNATE.

Возвращаемое значение

Предыдущий режим заполнения, если выполнен успешно; в противном случае — 0.

Замечания

Если режим ALTERNATEмногоугольника заполнен, система заполняет область между нечетной и четной стороной многоугольника на каждой линии сканирования. То есть система заполняет область между первой и второй стороной, между третьей и четвертой стороной и т. д. Это режим по умолчанию.

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

CDC::SetROP2

Задает текущий режим рисования.

int SetROP2(int nDrawMode);

Параметры

nDrawMode
Задает новый режим рисования. В качестве такой точки может выступать любой из следующих вариантов:

  • R2_BLACK Пиксель всегда черный.

  • R2_WHITE Пиксель всегда белый.

  • R2_NOP Пиксель остается неизменным.

  • R2_NOT Пиксель — это обратное цвет экрана.

  • R2_COPYPEN Пиксель — это цвет пера.

  • R2_NOTCOPYPEN Пиксель является обратным цветом пера.

  • R2_MERGEPENNOT Пиксель — это сочетание цвета пера и обратного цвета экрана (окончательный пиксель = (~ пиксель экрана) | пера).

  • R2_MASKPENNOTПиксель — это сочетание цветов, общих для пера и обратного экрана (окончательный пиксель = (~пиксель экрана). &

  • R2_MERGENOTPEN Пиксель — это сочетание цвета экрана и обратного цвета пера (окончательный пиксель = (~ перо) | экрана).

  • R2_MASKNOTPEN Пиксель — это сочетание цветов, общих как для экрана, так и обратного пера (окончательного пикселя =~ (перо) & экрана).

  • R2_MERGEPEN Пиксель — это сочетание цвета пера и цвета экрана (окончательный пиксель = пиксель пера | ).

  • R2_NOTMERGEPEN Пиксель является обратным цветом R2_MERGEPEN (окончательный пиксель = ~ (пиксель пера | )).

  • R2_MASKPEN Пиксель — это сочетание цветов, общих для пера и экрана (окончательный пиксель = пиксель пера & ).

  • R2_NOTMASKPEN Пиксель является обратным цветом R2_MASKPEN (окончательный пиксель = ~ (пиксель пера & )).

  • R2_XORPEN Пиксель — это сочетание цветов, которые находятся в перо или на экране, но не в обоих (окончательный пиксель = пиксель пера ^ ).

  • R2_NOTXORPEN Пиксель является обратным цветом R2_XORPEN (окончательный пиксель = ~ (пиксель пера ^ )).

Возвращаемое значение

Предыдущий режим рисования.

Это может быть любое из значений, заданных в пакете SDK для Windows.

Замечания

Режим рисования указывает, как цвета пера и интерьер заполненных объектов объединяются с цветом, уже на поверхности отображения.

Режим рисования предназначен только для растровых устройств; Он не применяется к векторным устройствам. Режимы рисования — это двоичные коды операций растра, представляющие все возможные логические сочетания двух переменных, используя двоичные операторы&, |и (монопольные|), а также ^ унарную операцию~.

CDC::SetStretchBltMode

Задает режим растягивания растровых изображений для StretchBlt функции-члена.

int SetStretchBltMode(int nStretchMode);

Параметры

nStretchMode
Задает режим растяжения. В качестве такой точки может выступать любой из следующих вариантов:

значение Описание
BLACKONWHITE Выполняет логическое & действие с использованием значений цвета для исключенных и существующих пикселей. Если растровое изображение является монохромным растровым изображением, этот режим сохраняет черные пиксели за счет белых пикселей.
COLORONCOLOR Удаляет пиксели. Этот режим удаляет все исключенные строки пикселей, не пытаясь сохранить их информацию.
HALFTONE Сопоставляет пиксели из исходного прямоугольника в блоки пикселей в прямоугольнике назначения. Средний цвет по целевому блоку пикселей приблизит цвет исходного пикселя.
После установки HALFTONE режима растяжения приложение должно вызвать функцию SetBrushOrgEx Win32, чтобы задать источник кисти. Если это не удается сделать, возникает несоответствие кисти.
STRETCH_ANDSCANS Windows 95/98: то же самое, что и BLACKONWHITE
STRETCH_DELETESCANS Windows 95/98: то же самое, что и COLORONCOLOR
STRETCH_HALFTONE Windows 95/98: то же самое, что HALFTONEи .
STRETCH_ORSCANS Windows 95/98: то же самое, что и WHITEONBLACK
WHITEONBLACK Выполняет логическое | действие с использованием значений цвета для исключенных и существующих пикселей. Если растровое изображение является монохромным растровым изображением, этот режим сохраняет белые пиксели за счет черных пикселей.

Возвращаемое значение

Предыдущий режим растяжения. Он может иметь значение STRETCH_ANDSCANS, STRETCH_DELETESCANS или STRETCH_ORSCANS.

Замечания

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

Режимы BLACKONWHITE(STRETCH_ANDSCANS) и WHITEONBLACK(STRETCH_ORSCANS) обычно используются для сохранения пикселей переднего плана в монохромных растровых изображениях. Режим COLORONCOLOR(STRETCH_DELETESCANS) обычно используется для сохранения цвета в растровых изображениях цвета.

В режиме требуется больше обработки исходного изображения, чем другие три режима. Это HALFTONE медленнее, чем другие, но создает более качественные изображения. Кроме того, SetBrushOrgEx необходимо вызвать после настройки HALFTONE режима, чтобы избежать несоответствия кисти.

Более растянутые режимы также могут быть доступны в зависимости от возможностей драйвера устройства.

CDC::SetTextAlign

Задает флаги выравнивания текста.

UINT SetTextAlign(UINT nFlags);

Параметры

nFlags
Задает флаги выравнивания текста. Флаги указывают связь между точкой и прямоугольником, ограничивающим текст. Точка может быть либо текущей позицией, либо координатами, указанными функцией вывода текста. Прямоугольник, ограничивающий текст, определяется смежными ячейками символов в текстовой строке. Параметр nFlags может быть одним или несколькими флагами из следующих трех категорий. Выберите только один флаг из каждой категории. Первая категория влияет на выравнивание текста в направлении x:

  • TA_CENTER Выравнивание точки с горизонтальным центром ограничивающего прямоугольника.

  • TA_LEFT Выравнивание точки с левой стороны ограничивающего прямоугольника. Этот параметр принимается по умолчанию.

  • TA_RIGHT Выравнивание точки с правой стороны ограничивающего прямоугольника.

Вторая категория влияет на выравнивание текста в направлении y:

  • TA_BASELINE Выравнивание точки с базовой линией выбранного шрифта.

  • TA_BOTTOM Выравнивает точку с нижней частью ограничивающего прямоугольника.

  • TA_TOP Выравнивает точку с верхней частью ограничивающего прямоугольника. Этот параметр принимается по умолчанию.

Третья категория определяет, обновляется ли текущая позиция при написании текста:

  • TA_NOUPDATECP Не обновляет текущую позицию после каждого вызова функции вывода текста. Этот параметр принимается по умолчанию.

  • TA_UPDATECP Обновляет текущую позицию x после каждого вызова функции вывода текста. Новая позиция находится в правой части ограничивающего прямоугольника для текста. При установке этого флага координаты, указанные в вызовах TextOut функции-члена, игнорируются.

Возвращаемое значение

Предыдущий параметр выравнивания текста при успешном выполнении. Байт низкого порядка содержит горизонтальный параметр, а байт высокого порядка содержит вертикальный параметр; в противном случае — 0.

Замечания

ExtTextOut Функции-члены TextOut используют эти флаги при расположении строки текста на дисплее или устройстве. Флаги указывают связь между определенной точкой и прямоугольником, ограничивающим текст. Координаты этой точки передаются в качестве параметров TextOut функции-члена. Прямоугольник, ограничивающий текст, формируется смежными ячейками символов в текстовой строке.

CDC::SetTextCharacterExtra

Задает количество интервалов между диаграммами.

int SetTextCharacterExtra(int nCharExtra);

Параметры

nCharExtra
Указывает объем дополнительного пространства (в логических единицах), добавляемого к каждому символу. Если текущий режим сопоставления не MM_TEXTзадан, nCharExtra преобразуется и округляется до ближайшего пикселя.

Возвращаемое значение

Объем предыдущего интервала между диаграммами.

Замечания

GDI добавляет этот интервал к каждому символу, включая символы останова, при записи строки текста в контекст устройства. Значение по умолчанию для интервала между диаграммами равно 0.

CDC::SetTextColor

Задает цвет текста указанным цветом.

virtual COLORREF SetTextColor(COLORREF crColor);

Параметры

crColor
Задает цвет текста в виде значения цвета RGB.

Возвращаемое значение

Значение RGB для предыдущего цвета текста.

Замечания

Система использует этот цвет текста при написании текста в контексте устройства, а также при преобразовании растровых изображений между контекстами устройства цвета и монохромного устройства.

Если устройство не может представлять указанный цвет, система задает цвет текста ближайшим физическим цветом. Цвет фона для символа определяется функциями-членами SetBkColor и SetBkMode функциями-членами.

Пример

Пример см. в примере CWnd::OnCtlColor.

CDC::SetTextJustification

Добавляет пробел в символы останова в строке.

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

Параметры

nBreakExtra
Указывает общее дополнительное пространство для добавления в строку текста (в логических единицах). Если текущий режим сопоставления не MM_TEXTявляется, значение, заданное этим параметром, преобразуется в текущий режим сопоставления и округляется до ближайшей единицы устройства.

nBreakCount
Указывает количество символов останова в строке.

Возвращаемое значение

Если функция выполнена успешно; в противном случае — 0.

Замечания

Приложение может использовать GetTextMetrics функции-члены для получения символа разрыва шрифта.

SetTextJustification После вызова функции-члена вызов функции вывода текста (напримерTextOut) распределяет указанное дополнительное пространство равномерно между указанным числом символов разрыва. Символ разрыва обычно является символом пробела (ASCII 32), но может быть определен шрифтом как другим символом.

Функция-член GetTextExtent обычно используется с SetTextJustification. GetTextExtent вычисляет ширину заданной строки перед выравниванием. Приложение может определить, сколько места нужно указать в nBreakExtra параметре, вычитая значение, возвращаемое GetTextExtent из ширины строки после выравнивания.

Функцию SetTextJustification можно использовать для выравнивания строки, содержащей несколько запусков в разных шрифтах. В этом случае строка должна быть создана по фрагменту путем выравнивания и записи каждого запуска отдельно.

Так как ошибки округления могут возникать во время выравнивания, система сохраняет запущенный термин ошибки, определяющий текущую ошибку. При выравнивании строки, содержащей несколько запусков, GetTextExtent автоматически использует этот термин ошибки при вычислении степени следующего запуска. Это позволяет функции вывода текста смешать ошибку в новом запуске.

После выравнивания каждой строки этот термин ошибки должен быть очищен, чтобы предотвратить его включение в следующую строку. Термин можно очистить, вызвав SetTextJustification nBreakExtra значение 0.

CDC::SetViewportExt

Задает x-и y-экстенты окна просмотра контекста устройства.

virtual CSize SetViewportExt(
    int cx,
    int cy);

CSize SetViewportExt(SIZE size);

Параметры

cx
Указывает x-экстент окна просмотра (в единицах устройства).

cy
Указывает y-экстент окна просмотра (в единицах устройства).

size
Указывает x-и y-экстенты окна просмотра (в единицах устройства).

Возвращаемое значение

Предыдущие экстенты окна просмотра в качестве CSize объекта. При возникновении ошибки координаты x-и y возвращаемого CSize объекта имеют значение 0.

Замечания

Окно просмотра вместе с окном контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат фактического устройства. Другими словами, они определяют, как GDI преобразует логические координаты в координаты устройства.

Если заданы следующие режимы сопоставления, вызовы SetWindowExt и SetViewportExt игнорируются:

MM_HIENGLISH MM_LOMETRIC
MM_HIMETRIC MM_TEXT
MM_LOENGLISH MM_TWIPS

При MM_ISOTROPIC установке режима приложение должно вызывать функцию-член перед вызовом SetWindowExt SetViewportExt.

Пример

Пример см. в примере CView::OnPrepareDC.

CDC::SetViewportOrg

Задает источник окна просмотра контекста устройства.

virtual CPoint SetViewportOrg(
    int x,
    int y);

CPoint SetViewportOrg(POINT point);

Параметры

x
Указывает координату x (в единицах устройства) источника окна просмотра. Значение должно находиться в диапазоне системы координат устройства.

y
Указывает координату y (в единицах устройства) источника окна просмотра. Значение должно находиться в диапазоне системы координат устройства.

point
Указывает источник окна просмотра. Значения должны находиться в диапазоне системы координат устройства. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Предыдущий источник окна просмотра (в координатах устройства) в качестве CPoint объекта.

Замечания

Окно просмотра вместе с окном контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат фактического устройства. Другими словами, они определяют, как GDI преобразует логические координаты в координаты устройства.

Источник окна просмотра отмечает точку в системе координат устройства, с которой GDI сопоставляет источник окна, точку в логической системе координат, указанной SetWindowOrg функцией-членом. GDI сопоставляет все остальные точки, выполнив тот же процесс, необходимый для сопоставления источника окна с источником окна. Например, все точки в круге вокруг точки в источнике окна будут находиться в круге вокруг точки в источнике представления. Аналогичным образом все точки в строке, которая проходит через источник окна, будет находиться в строке, которая проходит через источник окна просмотра.

Пример

Пример см. в примере CView::OnPrepareDC.

CDC::SetWindowExt

Задает x-и y-экстенты окна, связанного с контекстом устройства.

virtual CSize SetWindowExt(
    int cx,
    int cy);

CSize SetWindowExt(SIZE size);

Параметры

cx
Указывает степень x (в логических единицах) окна.

cy
Указывает степень y (в логических единицах) окна.

size
Задает экстенты x и y (в логических единицах) окна.

Возвращаемое значение

Предыдущие экстенты окна (в логических единицах) в качестве CSize объекта. Если возникает ошибка, координаты x-и y возвращаемого CSize объекта имеют значение 0.

Замечания

Окно вместе с окном представления контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат устройства.

Если заданы следующие режимы сопоставления, вызовы SetWindowExt и SetViewportExt функции игнорируются:

  • MM_HIENGLISH

  • MM_HIMETRIC

  • MM_LOENGLISH

  • MM_LOMETRIC

  • MM_TEXT

  • MM_TWIPS

При MM_ISOTROPIC установке режима приложение должно вызвать функцию-член перед вызовом SetWindowExt SetViewportExt.

Пример

Пример см. в примере CView::OnPrepareDC.

CDC::SetWindowOrg

Задает источник окна контекста устройства.

CPoint SetWindowOrg(
    int x,
    int y);

CPoint SetWindowOrg(POINT point);

Параметры

x
Задает логическую координату x нового источника окна.

y
Задает логическую координату y нового источника окна.

point
Задает логические координаты нового источника окна. Для этого параметра можно передать структуру POINT CPoint или объект.

Возвращаемое значение

Предыдущий источник окна в качестве CPoint объекта.

Замечания

Окно вместе с окном представления контекста устройства определяет, как GDI сопоставляет точки в логической системе координат с точками в системе координат устройства.

Источник окна помечает точку в системе логических координат, из которой GDI сопоставляет источник окна просмотра, точку в системе координат устройства, указанной SetWindowOrg функцией. GDI сопоставляет все остальные точки, выполнив тот же процесс, необходимый для сопоставления источника окна с источником окна. Например, все точки в круге вокруг точки в источнике окна будут находиться в круге вокруг точки в источнике представления. Аналогичным образом все точки в строке, которая проходит через источник окна, будет находиться в строке, которая проходит через источник окна просмотра.

CDC::SetWorldTransform

Задает двухмерное линейное преобразование между пространством мира и пространством страниц для указанного контекста устройства. Это преобразование можно использовать для масштабирования, поворота, стрижения или преобразования выходных данных графики.

BOOL SetWorldTransform(const XFORM& rXform);

Параметры

rXform
Ссылка на структуру XFORM , содержащую данные преобразования.

Возвращаемое значение

Возвращает ненулевое значение при успешном выполнении.

Возвращает значение 0 при сбое.

Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Этот метод упаковывает функцию SetWorldTransformGDI Windows.

CDC::StartDoc

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

int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);

Параметры

lpDocInfo
Указывает на DOCINFO структуру, содержащую имя файла документа и имя выходного файла.

lpszDocName
Указатель на строку, содержащую имя файла документа.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение больше нуля. Это значение является идентификатором задания печати для документа.

Если функция завершается ошибкой, возвращаемое значение меньше нуля или равно нулю.

Замечания

Это гарантирует, что документы, длиннее одной страницы, не будут перемежаться с другими заданиями.

Для Windows версии 3.1 и более поздних версий эта функция заменяет STARTDOC экран-экран принтера. Использование этой функции гарантирует, что документы, содержащие несколько страниц, не перемежаются с другими заданиями печати.

StartDoc не следует использовать внутри метафайлов.

Пример

Этот фрагмент кода получает принтер по умолчанию, открывает задание печати и спулает одну страницу с "Hello, World!" на ней. Так как текст, напечатанный этим кодом, не масштабируется до логических единиц принтера, выходной текст может находиться в таких небольших буквах, что результат недоступен. Функции масштабирования CDC, такие как SetMapMode, SetViewportOrgи SetWindowExt, можно использовать для исправления масштабирования.

void CDCView::DoStartDoc()
{
   // get the default printer
   CPrintDialog dlg(FALSE);
   dlg.GetDefaults();

   // is a default printer set up?
   HDC hdcPrinter = dlg.GetPrinterDC();
   if (hdcPrinter == NULL)
   {
      MessageBox(_T("Buy a printer!"));
   }
   else
   {
      // create a CDC and attach it to the default printer
      CDC dcPrinter;
      dcPrinter.Attach(hdcPrinter);

      // call StartDoc() to begin printing
      DOCINFO docinfo;
      memset(&docinfo, 0, sizeof(docinfo));
      docinfo.cbSize = sizeof(docinfo);
      docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");

      // if it fails, complain and exit gracefully
      if (dcPrinter.StartDoc(&docinfo) < 0)
      {
         MessageBox(_T("Printer wouldn't initialize"));
      }
      else
      {
         // start a page
         if (dcPrinter.StartPage() < 0)
         {
            MessageBox(_T("Could not start page"));
            dcPrinter.AbortDoc();
         }
         else
         {
            // actually do some printing
            CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);

            dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);

            dcPrinter.EndPage();
            dcPrinter.EndDoc();
            dcPrinter.SelectObject(pOldFont);
         }
      }
   }
}

CDC::StartPage

Вызовите эту функцию-член, чтобы подготовить драйвер принтера для получения данных.

int StartPage();

Возвращаемое значение

Больше или равно 0, если функция выполнена успешно, или отрицательное значение, если произошла ошибка.

Замечания

StartPageNEWFRAME заменяет и BANDINFO бежит.

Общие сведения о последовательности вызовов печати см. в функции-члене StartDoc .

Система отключает ResetDC функцию-член между вызовами StartPage и EndPage.

Пример

Пример см. в примере CDC::StartDoc.

CDC::StretchBlt

Копирует точечный рисунок из исходного прямоугольника в прямоугольник назначения, при необходимости растягивая или сжимая точечный рисунок в соответствии с размерами прямоугольника назначения.

BOOL StretchBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    DWORD dwRop);

Параметры

x
Указывает x-координату (в логических единицах) левого верхнего угла прямоугольника назначения.

y
Указывает y-координату (в логических единицах) левого верхнего угла прямоугольника назначения.

nWidth
Задает ширину прямоугольника назначения (в логических единицах).

nHeight
Задает высоту прямоугольника назначения (в логических единицах).

pSrcDC
Задает контекст исходного устройства.

xSrc
Указывает x-координату (в логических единицах) левого верхнего угла исходного прямоугольника.

ySrc
Указывает y-координату (в логических единицах) левого верхнего угла исходного прямоугольника.

nSrcWidth
Задает ширину исходного прямоугольника (в логических единицах).

nSrcHeight
Задает высоту исходного прямоугольника (в логических единицах).

dwRop
Определяет подлежащую выполнению растровую операцию. Коды растровых операций определяют, как GDI сочетает цвета в операциях вывода, где используется текущая кисть, возможный исходный точечный рисунок и точечный рисунок назначения. Этот параметр может иметь одно из следующих значений:

  • BLACKNESS Превращает все выходные данные черным.

  • DSTINVERT Инвертирует точечный рисунок назначения.

  • MERGECOPY Объединяет шаблон и исходное растровое изображение с помощью логического оператора AND .

  • MERGEPAINT Объединяет инвертированную исходную растровую карту с целевой растровой картой с помощью логического оператора OR .

  • NOTSRCCOPY Копирует перевернутый исходный растровый рисунок в место назначения.

  • NOTSRCERASE Инвертирует результат объединения целевых и исходных растровых изображений с помощью логического оператора OR .

  • PATCOPY Копирует шаблон в точечный рисунок назначения.

  • PATINVERT Объединяет растровое изображение назначения с шаблоном с помощью логического оператора XOR .

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

  • SRCAND Объединяет пиксели целевого и исходного растровых изображений с помощью логического оператора AND .

  • SRCCOPY Копирует исходное растровое изображение в целевой растровый рисунок.

  • SRCERASE Инвертирует точечный рисунок назначения и объединяет результат с исходным растровым изображением с помощью оператора Boolean AND .

  • SRCINVERT Объединяет пиксели целевого и исходного растровых изображений с помощью логического оператора XOR .

  • SRCPAINT Объединяет пиксели целевого и исходного растровых изображений с помощью логического оператора OR .

  • WHITENESS Преобразует весь выходной белый цвет.

Возвращаемое значение

Ненулевое значение, если точечный рисунок рисуется, в противном случае — 0.

Замечания

Эта функция использует режим растягивания контекста устройства назначения (задается SetStretchBltMode), чтобы определить, как необходимо растянуть или сжать точечный рисунок.

Функция StretchBlt перемещает растровое изображение с исходного устройства, заданного pSrcDC на целевое устройство, представленное объектом контекста устройства, который вызывается функцией-член. Параметры xSrcySrcnSrcWidth, и параметры определяют верхний левый угол и nSrcHeight размеры исходного прямоугольника. Значения x, ynWidthи nHeight параметры дают верхний левый угол и размеры прямоугольника назначения. Операция растра, указанная с помощью dwRop определения того, как исходный растровый рисунок и биты уже объединяются на целевом устройстве.

Функция StretchBlt создает зеркальное изображение растрового изображения, если признаки nSrcWidth и nWidth nSrcHeight nHeight параметры отличаются. Если nSrcWidth и nWidth имеют разные знаки, функция создает зеркальное изображение растрового изображения вдоль оси x. Если nSrcHeight и nHeight имеют разные знаки, функция создает зеркальное изображение растрового изображения вдоль оси Y.

Функция StretchBlt растягивает или сжимает исходный точечный рисунок, а затем копирует результат в место назначения. Если шаблон должен быть объединен с результатом, он не будет объединен до тех пор, пока растягиваемое исходное растровое изображение будет скопировано в место назначения. Если используется кисть, это выбранная кисть в контексте целевого устройства. Координаты назначения преобразуются в зависимости от контекста устройства назначения; исходные координаты преобразуются в зависимости от контекста исходного устройства.

Если целевые, исходные и шаблонные растровые изображения не имеют одного и того же формата цвета, StretchBlt преобразовывает исходные и шаблонные растровые изображения в соответствии с целевыми растровыми изображениями. В преобразовании используются цвета переднего плана и фона контекста устройства назначения.

Если StretchBlt необходимо преобразовать монохромный точечный рисунок в цвет, белые биты (1) задаются в качестве значения цвета фона, а черные биты (0) — в качестве цвета переднего плана. Для преобразования цветов в монохромный режим определяются пиксели, сопоставляющие цвет фона белому (1), а все остальные пиксели становятся черными (0). Используются цвета переднего плана и фона контекста устройства назначения с цветом.

Не все устройства поддерживают функцию StretchBlt. Чтобы определить, поддерживает StretchBltли устройство, вызовите GetDeviceCaps функцию-член с индексом RASTERCAPS и проверьте возвращаемое значение флага RC_STRETCHBLT .

CDC::StrokeAndFillPath

Закрывает все открытые фигуры в пути, перечеркивает контур пути с помощью текущего пера и заполняет его интерьер с помощью текущей кисти.

BOOL StrokeAndFillPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Контекст устройства должен содержать закрытый путь. StrokeAndFillPath Функция-член имеет тот же эффект, что и закрытие всех открытых фигур в пути, а также поглаживание и заполнение пути отдельно, за исключением того, что заполненная область не перекрывает почеркнутую область, даже если перо широкое.

CDC::StrokePath

Отрисовывает указанный путь с помощью текущего пера.

BOOL StrokePath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Контекст устройства должен содержать закрытый путь.

CDC::TabbedTextOut

Вызовите эту функцию-член, чтобы написать символьную строку в указанном расположении, разверните вкладки к значениям, указанным в массиве позиций табуляции стоп.

virtual CSize TabbedTextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions,
    int nTabOrigin);

CSize TabbedTextOut(
    int x,
    int y,
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions,
    int nTabOrigin);

Параметры

x
Задает логическую координату x начальной точки строки.

y
Задает логическую координату y начальной точки строки.

lpszString
Указывает на строку символа для рисования. Можно передать указатель на массив символов или CString объект для этого параметра.

nCount
Указывает длину строки , на которую указывает lpszString.

nTabPositions
Указывает количество значений в массиве позиций табуляции стоп.

lpnTabStopPositions
Указывает на массив, содержащий позиции табуляции (в логических единицах). Остановки табуляции должны быть отсортированы по возрастанию порядка; Наименьшее x-значение должно быть первым элементом в массиве.

nTabOrigin
Задает координату x начальной позиции, из которой развернуты вкладки (в логических единицах).

str
CString Объект, содержащий указанные символы.

Возвращаемое значение

Размеры строки (в логических единицах) в качестве CSize объекта.

Замечания

Текст записывается в выбранном в данный момент шрифте. Если nTabPositions значение равно 0 и lpnTabStopPositions NULLимеет значение, вкладки расширяются до восьми раз средней ширины символов.

Если nTabPositions значение равно 1, вкладка останавливается по расстоянию, указанному первым значением в массиве lpnTabStopPositions . lpnTabStopPositions Если массив содержит несколько значений, то для каждого значения в массиве устанавливается остановка табуляции до числа, указанного в параметреnTabPositions. Параметр nTabOrigin позволяет приложению TabbedTextOut вызывать функцию несколько раз для одной строки. Если приложение вызывает функцию более одного раза с nTabOrigin заданным значением каждый раз, функция развертывает все вкладки относительно позиции, указанной в параметре nTabOrigin.

По умолчанию текущая позиция не используется или обновляется функцией. Если приложению необходимо обновить текущую позицию при вызове функции, приложение может вызвать SetTextAlign функцию-член с nFlags заданным значением TA_UPDATECP. Если этот флаг задан, Windows игнорирует x и y параметры при последующих вызовах TabbedTextOut, используя текущую позицию.

CDC::TextOut

Записывает символьную строку в указанном месте, используя текущий выбранный шрифт.

virtual BOOL TextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount);

BOOL TextOut(
    int x,
    int y,
    const CString& str);

Параметры

x
Указывает логическую координату X начальной точки текста.

y
Указывает логическую координату Y начальной точки текста.

lpszString
Указывает на строку символов, которую необходимо нарисовать.

nCount
Указывает количество знаков в строке.

str
Объект CString, который содержит символы, которые необходимо нарисовать.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

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

Если приложению необходимо обновить текущую позицию при вызове TextOut, приложение может вызвать SetTextAlign функцию-член с заданным nFlags значением TA_UPDATECP. Если этот флаг задан, Windows игнорирует x и y параметры при последующих вызовах TextOut, используя текущую позицию.

Пример

Пример см. в примере CDC::BeginPath.

CDC::TransparentBlt

Вызовите эту функцию-член, чтобы передать битовый блок данных цвета, который соответствует прямоугольнику пикселей из указанного контекста исходного устройства в контекст конечного устройства.

BOOL TransparentBlt(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT clrTransparent);

Параметры

xDest
Задает координату x в логических единицах верхнего левого угла прямоугольника назначения.

yDest
Задает координату y в логических единицах верхнего левого угла прямоугольника назначения.

nDestWidth
Задает ширину в логических единицах целевого прямоугольника.

nDestHeight
Задает высоту в логических единицах прямоугольника назначения.

pSrcDC
Указатель на контекст исходного устройства.

xSrc
Задает координату x в логических единицах исходного прямоугольника.

ySrc
Задает координату y в логических единицах исходного прямоугольника.

nSrcWidth
Задает ширину в логических единицах исходного прямоугольника.

nSrcHeight
Задает высоту в логических единицах исходного прямоугольника.

clrTransparent
Цвет RGB в исходном растровом рисунке, который будет рассматриваться как прозрачный.

Возвращаемое значение

Значение TRUE в случае успешного выполнения; в противном случае — значение FALSE.

Замечания

TransparentBlt обеспечивает прозрачность; т. е. цвет RGB, указанный clrTransparent отрисовывается прозрачным для передачи.

Дополнительные сведения см TransparentBlt . в пакете SDK для Windows.

CDC::UpdateColors

Обновляет клиентская область контекста устройства, сопоставляя текущие цвета в клиентской области с системной палитрой на основе пикселей по пикселям.

void UpdateColors();

Замечания

Неактивное окно с реализованной логической палитрой может вызываться UpdateColors как альтернатива перерисовке клиентской области при изменении системной палитры.

Дополнительные сведения об использовании цветовой палитры см UpdateColors . в пакете SDK для Windows.

Функция-член UpdateColors обычно обновляет клиентская область быстрее, чем перерисовка области. Однако, поскольку функция выполняет преобразование цветов на основе цвета каждого пикселя до изменения системной палитры, каждый вызов этой функции приводит к потере некоторой точности цвета.

CDC::WidenPath

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

BOOL WidenPath();

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Эта функция выполняется успешно, только если текущее перо является геометрическим пером, созданным второй версией функции-члена, или если перо создается с первой версией CreatePen CreatePen и имеет ширину в единицах устройства больше 1. Контекст устройства должен содержать закрытый путь. Любые кривые Bzier в пути преобразуются в последовательности прямых линий, приблизиющих расширенные кривые. Таким образом, кривые Bzier остаются в пути после WidenPath вызова.

См. также

CObject Класс
Диаграмма иерархии
CPaintDC Класс
CWindowDC Класс
CClientDC Класс
CMetaFileDC Класс