Compartir a través de


Clase CDC

Define una clase de objetos en el contexto del dispositivo.

Sintaxis

class CDC : public CObject

Miembros

Constructores públicos

Nombre Descripción
CDC::CDC Construye un objeto CDC.

Métodos públicos

Nombre Descripción
CDC::AbortDoc Finaliza el trabajo de impresión actual y borra todo lo que la aplicación ha escrito en el dispositivo desde la última llamada de la función miembro StartDoc.
CDC::AbortPath Cierra y descarta los trazados del contexto de dispositivo.
CDC::AddMetaFileComment Copia el comentario de un búfer en un metarchivo especificado de formato mejorado.
CDC::AlphaBlend Muestra mapas de bits que tienen píxeles transparentes o semitransparentes.
CDC::AngleArc Dibuja un segmento de línea y un arco, y mueve la posición actual al punto final del arco.
CDC::Arc Dibuja un arco elíptico.
CDC::ArcTo Dibuja un arco elíptico. Esta función es similar a Arc, salvo que se actualiza la posición actual.
CDC::Attach Asocia un contexto de dispositivo Windows a este objeto CDC.
CDC::BeginPath Abre un corchete de trazado en el contexto de dispositivo.
CDC::BitBlt Copia un mapa de bits desde un contexto de dispositivo especificado.
CDC::Chord Dibuja una cuerda (una figura cerrada delimitada por la intersección de una elipse y un segmento de línea).
CDC::CloseFigure Cierra una figura abierta en un trazado.
CDC::CreateCompatibleDC Crea un contexto de dispositivo de memoria que es compatible con otro contexto de dispositivo. Puede usarlo para preparar imágenes en la memoria.
CDC::CreateDC Crea un contexto de dispositivo para un dispositivo específico.
CDC::CreateIC Crea un contexto de información para un dispositivo específico. Esto proporciona una manera rápida de obtener información sobre el dispositivo sin necesidad de crear un contexto de dispositivo.
CDC::DeleteDC Elimina el contexto de dispositivo Windows asociado a este objeto CDC.
CDC::DeleteTempMap Llamado por el controlador de tiempo de inactividad de CWinApp para eliminar cualquier objeto temporal CDC creado por FromHandle. También desasocia el contexto de dispositivo.
CDC::Detach Desasocia el contexto de dispositivo Windows de este objeto CDC.
CDC::DPtoHIMETRIC Convierte las unidades de dispositivo en unidades HIMETRIC.
CDC::DPtoLP Convierte las unidades de dispositivo en unidades lógicas.
CDC::Draw3dRect Dibuja un rectángulo tridimensional.
CDC::DrawDragRect Borra y vuelve a dibujar un rectángulo mientras se arrastra.
CDC::DrawEdge Dibuja los bordes de un rectángulo.
CDC::DrawEscape Accede a las funcionalidades de dibujo de una pantalla de vídeo que no están disponibles directamente a través de la interfaz de dispositivo gráfico (GDI).
CDC::DrawFocusRect Dibuja un rectángulo con el estilo usado para indicar el foco.
CDC::DrawFrameControl Dibuja un control de marco.
CDC::DrawIcon Dibuja un icono.
CDC::DrawState Muestra una imagen y aplica un efecto visual para indicar un estado.
CDC::DrawText Dibuja texto con formato en el rectángulo especificado.
CDC::DrawTextEx Dibuja texto con formato en el rectángulo especificado con otros formatos.
CDC::Ellipse Dibuja una elipse.
CDC::EndDoc Finaliza un trabajo de impresión iniciado por la función miembro StartDoc.
CDC::EndPage Informa al controlador de dispositivo de que finaliza una página.
CDC::EndPath Cierra un corchete de trazado y selecciona el trazado definido por el corchete en el contexto de dispositivo.
CDC::EnumObjects Enumera los lápices y pinceles disponibles en un contexto de dispositivo.
CDC::Escape Permite que las aplicaciones accedan a las instalaciones que no están directamente disponibles desde un dispositivo determinado a través de GDI. También permite el acceso a las funciones de escape de Windows. Las llamadas de escape que realiza una aplicación se traducen y envían al controlador del dispositivo.
CDC::ExcludeClipRect Crea una zona de recorte que consta de la zona de recorte existente menos el rectángulo especificado.
CDC::ExcludeUpdateRgn Impide dibujar dentro de áreas no válidas de una ventana al excluir de la zona de recorte una región actualizada de la ventana.
CDC::ExtFloodFill Rellena un área con el pincel actual. Proporciona más flexibilidad que la función miembro CDC::FloodFill.
CDC::ExtTextOut Escribe una cadena de caracteres dentro de una región rectangular mediante la fuente seleccionada actualmente.
CDC::FillPath Cierra cualquier figura abierta del trazado actual y rellena el interior del trazado mediante el pincel actual y el modo de relleno de polígonos.
CDC::FillRect Rellena un rectángulo determinado mediante un pincel específico.
CDC::FillRgn Rellena una región específica con el pincel especificado.
CDC::FillSolidRect Rellena un rectángulo con un color sólido.
CDC::FlattenPath Transforma las curvas del trazado seleccionado en el contexto de dispositivo actual y convierte cada curva en una secuencia de líneas.
CDC::FloodFill Rellena un área con el pincel actual.
CDC::FrameRect Dibuja un borde alrededor de un rectángulo.
CDC::FrameRgn Dibuja un borde alrededor de una región específica mediante un pincel.
CDC::FromHandle Devuelve un puntero a un objeto CDC cuando se especifica un identificador de un contexto de dispositivo. Si un objeto CDC no está asociado al identificador, se creará y asociará un objeto CDC temporal.
CDC::GetArcDirection Devuelve la dirección del arco actual para el contexto de dispositivo.
CDC::GetAspectRatioFilter Recupera la configuración del filtro de relación de aspecto actual.
CDC::GetBkColor Recupera el color de fondo actual.
CDC::GetBkMode Recupera el modo de fondo.
CDC::GetBoundsRect Devuelve el rectángulo delimitador acumulado actual para el contexto de dispositivo especificado.
CDC::GetBrushOrg Recupera el origen del pincel actual.
CDC::GetCharABCWidths Recupera los anchos, en unidades lógicas, de caracteres consecutivos en un intervalo determinado de la fuente actual.
CDC::GetCharABCWidthsI Recupera los anchos, en unidades lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente TrueType actual.
CDC::GetCharacterPlacement Recupera varios tipos de información sobre una cadena de caracteres.
CDC::GetCharWidth Recupera los anchos fraccionarios de caracteres consecutivos en un intervalo determinado de la fuente actual.
CDC::GetCharWidthI Recupera los anchos, en coordenadas lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente actual.
CDC::GetClipBox Recupera las dimensiones del rectángulo delimitador más estrecho alrededor del límite de recorte actual.
CDC::GetColorAdjustment Recupera los valores de ajuste de color para el contexto de dispositivo.
CDC::GetCurrentBitmap Devuelve un puntero al objeto CBitmap seleccionado actualmente.
CDC::GetCurrentBrush Devuelve un puntero al objeto CBrush seleccionado actualmente.
CDC::GetCurrentFont Devuelve un puntero al objeto CFont seleccionado actualmente.
CDC::GetCurrentPalette Devuelve un puntero al objeto CPalette seleccionado actualmente.
CDC::GetCurrentPen Devuelve un puntero al objeto CPen seleccionado actualmente.
CDC::GetCurrentPosition Recupera la posición actual del lápiz (en coordenadas lógicas).
CDC::GetDCBrushColor Recupera el color de pincel actual.
CDC::GetDCPenColor Recupera el color del lápiz actual.
CDC::GetDeviceCaps Recupera un tipo especificado de información concreta del dispositivo sobre las funcionalidades de un dispositivo de visualización determinado.
CDC::GetFontData Recupera información de métricas de fuente de un archivo de fuente escalable. Para identificar qué información se va a recuperar, se especifica un desplazamiento en el archivo de fuente y la longitud de la información que se devolverá.
CDC::GetFontLanguageInfo Devuelve información sobre la fuente seleccionada actualmente para el contexto de visualización especificado.
CDC::GetGlyphOutline Recupera la curva de contorno o el mapa de bits de un carácter de contorno en la fuente actual.
CDC::GetGraphicsMode Recupera el modo gráfico actual para el contexto de dispositivo especificado.
CDC::GetHalftoneBrush Recupera un pincel de semitonos.
CDC::GetKerningPairs Recupera los pares de interletraje de caracteres para la fuente seleccionada actualmente en el contexto de dispositivo especificado.
CDC::GetLayout Recupera el diseño de un contexto de dispositivo (DC). El diseño puede ser de izquierda a derecha (valor predeterminado) o de derecha a izquierda (reflejado).
CDC::GetMapMode Recupera el modo de asignación actual.
CDC::GetMiterLimit Devuelve el límite angular para el contexto de dispositivo.
CDC::GetNearestColor Recupera el color lógico más cercano a un color lógico especificado que el dispositivo determinado puede representar.
CDC::GetOutlineTextMetrics Recupera información de métricas de fuente para fuentes TrueType.
CDC::GetOutputCharWidth Recupera los anchos de caracteres individuales de un grupo consecutivo de caracteres de la fuente actual mediante el contexto de dispositivo de salida.
CDC::GetOutputTabbedTextExtent Calcula el ancho y el alto de una cadena de caracteres en el contexto de dispositivo de salida.
CDC::GetOutputTextExtent Calcula el ancho y el alto de una línea de texto en el contexto de dispositivo de salida mediante la fuente actual para determinar las dimensiones.
CDC::GetOutputTextMetrics Recupera las métricas de la fuente actual del contexto de dispositivo de salida.
CDC::GetPath Recupera las coordenadas que definen los extremos de líneas y los puntos de control de curvas que se encuentran en el trazado seleccionado en el contexto de dispositivo.
CDC::GetPixel Recupera el valor de color RGB del píxel en el punto especificado.
CDC::GetPolyFillMode Recupera el modo actual de relleno de polígonos.
CDC::GetROP2 Recupera el modo de dibujo actual.
CDC::GetSafeHdc Devuelve CDC::m_hDC, el contexto de dispositivo de salida.
CDC::GetStretchBltMode Recupera el modo de extensión del mapa de bits actual.
CDC::GetTabbedTextExtent Calcula el ancho y el alto de una cadena de caracteres en el contexto de dispositivo de atributo.
CDC::GetTextAlign Recupera las marcas de alineación de texto.
CDC::GetTextCharacterExtra Recupera la configuración actual de la cantidad de espaciado entre caracteres.
CDC::GetTextColor Recupera el color actual del texto.
CDC::GetTextExtent Calcula el ancho y el alto de una línea de texto en el contexto de dispositivo de atributo mediante la fuente actual para determinar las dimensiones.
CDC::GetTextExtentExPointI Recupera el número de caracteres de una cadena especificada que cabrá en un espacio determinado y rellena una matriz con la extensión de texto para cada uno de esos caracteres.
CDC::GetTextExtentPointI Recupera el ancho y el alto de la matriz especificada de índices de glifo.
CDC::GetTextFace Copia el nombre del tipo de letra de la fuente actual en un búfer como una cadena terminada en null.
CDC::GetTextMetrics Recupera las métricas de la fuente actual del contexto de dispositivo de atributo.
CDC::GetViewportExt Recupera las extensiones x e y del área de visualización.
CDC::GetViewportOrg Recupera las coordenadas x e y del origen del área de visualización.
CDC::GetWindow Devuelve la ventana asociada al contexto de dispositivo de visualización.
CDC::GetWindowExt Recupera las extensiones x e y de la ventana asociada.
CDC::GetWindowOrg Recupera las coordenadas x e y del origen de la ventana asociada.
CDC::GetWorldTransform Recupera la transformación actual del espacio global al espacio de página.
CDC::GradientFill Rellena las estructuras de rectángulo y triángulo con un color que se degrada.
CDC::GrayString Dibuja texto atenuado en la ubicación especificada.
CDC::HIMETRICtoDP Convierte las unidades HIMETRIC en unidades de dispositivo.
CDC::HIMETRICtoLP Convierte las unidades HIMETRIC en unidades lógicas.
CDC::IntersectClipRect Crea una zona de recorte al formar la intersección de la región actual y un rectángulo.
CDC::InvertRect Invierte el contenido de un rectángulo.
CDC::InvertRgn Invierte los colores de una región.
CDC::IsPrinting Determina si el contexto de dispositivo se usa para imprimir.
CDC::LineTo Dibuja una línea desde la posición actual hasta un punto (no incluido).
CDC::LPtoDP Convierte las unidades lógicas en unidades de dispositivo.
CDC::LPtoHIMETRIC Convierte las unidades lógicas en unidades HIMETRIC.
CDC::MaskBlt Combina los datos de color de los mapas de bits de origen y destino mediante la operación de máscara y trama especificadas.
CDC::ModifyWorldTransform Cambia la transformación global de un contexto de dispositivo mediante el modo especificado.
CDC::MoveTo Mueve la posición actual.
CDC::OffsetClipRgn Mueve la zona de recorte del dispositivo especificado.
CDC::OffsetViewportOrg Modifica el origen del área de visualización en relación con las coordenadas del origen del área de visualización actual.
CDC::OffsetWindowOrg Modifica el origen de la ventana en relación con las coordenadas del origen de la ventana actual.
CDC::PaintRgn Rellena una región con el pincel seleccionado.
CDC::PatBlt Crea un patrón de bits.
CDC::Pie Dibuja una cuña con forma circular.
CDC::PlayMetaFile Reproduce el contenido del metarchivo especificado en el dispositivo determinado. La versión mejorada de PlayMetaFile muestra la imagen almacenada en el metarchivo de formato mejorado. El metarchivo se puede reproducir cualquier número de veces.
CDC::PlgBlt Realiza una transferencia de bloques de bits de los bits de datos de color desde el rectángulo especificado en el contexto de dispositivo de origen hasta el paralelogramo especificado en el contexto de dispositivo determinado.
CDC::PolyBezier Dibuja una o varias B-splines. La posición actual no se usa ni actualiza.
CDC::PolyBezierTo Dibuja una o varias B-splines y mueve la posición actual al punto final de la última B-spline.
CDC::PolyDraw Dibuja un conjunto de segmentos de línea y B-splines. Esta función actualiza la posición actual.
CDC::Polygon Dibuja un polígono que consta de dos o más puntos (vértices) conectados por líneas.
CDC::Polyline Dibuja un conjunto de segmentos de línea que conectan los puntos especificados.
CDC::PolylineTo Dibuja una o varias líneas rectas y mueve la posición actual al punto final de la última línea.
CDC::PolyPolygon Crea dos o más polígonos que se rellenan mediante el modo de relleno de polígono actual. Los polígonos pueden estar separados o superponerse.
CDC::PolyPolyline Dibuja varias series de segmentos de línea conectados. Esta función no usa ni actualiza la posición actual.
CDC::PtVisible Especifica si el punto determinado está dentro de la zona de recorte.
CDC::RealizePalette Asigna entradas de la paleta lógica actual a la paleta del sistema.
CDC::Rectangle Dibuja un rectángulo con el lápiz actual y lo rellena con el pincel actual.
CDC::RectVisible Determina si alguna parte del rectángulo especificado se encuentra dentro de la zona de recorte.
CDC::ReleaseAttribDC Libera m_hAttribDC, el contexto de dispositivo de atributo.
CDC::ReleaseOutputDC Libera m_hDC, el contexto de dispositivo de salida.
CDC::ResetDC Actualiza el contexto de dispositivo de m_hAttribDC.
CDC::RestoreDC Restaura el contexto de dispositivo a un estado anterior guardado con SaveDC.
CDC::RoundRect Dibuja un rectángulo con las esquinas redondeadas con el lápiz actual y rellenado con el pincel actual.
CDC::SaveDC Guarda el estado actual del contexto de dispositivo.
CDC::ScaleViewportExt Modifica la extensión del área de visualización en relación con los valores actuales.
CDC::ScaleWindowExt Modifica las extensiones de la ventana en relación con los valores actuales.
CDC::ScrollDC Desplaza un rectángulo de bits horizontal y verticalmente.
CDC::SelectClipPath Selecciona el trazado actual como zona de recorte para el contexto de dispositivo, y combina la nueva región con cualquier zona de recorte existente mediante el modo especificado.
CDC::SelectClipRgn Combina la región especificada con la zona de recorte actual mediante el modo especificado.
CDC::SelectObject Selecciona un objeto de dibujo GDI, como un lápiz.
CDC::SelectPalette Selecciona la paleta lógica.
CDC::SelectStockObject Selecciona uno de los lápices, pinceles o fuentes predefinidos que proporciona Windows.
CDC::SetAbortProc Establece una función de devolución de llamada proporcionada por el programador a la que Windows llama si se debe anular un trabajo de impresión.
CDC::SetArcDirection Establece la dirección de dibujo que se va a usar para las funciones de arco y rectángulo.
CDC::SetAttribDC Establece m_hAttribDC, el contexto de dispositivo de atributo.
CDC::SetBkColor Establece el color de fondo actual.
CDC::SetBkMode Establece el modo de fondo.
CDC::SetBoundsRect Controla la acumulación de información del rectángulo delimitador para el contexto de dispositivo especificado.
CDC::SetBrushOrg Especifica el origen del siguiente pincel seleccionado en un contexto de dispositivo.
CDC::SetColorAdjustment Establece los valores de ajuste de color para el contexto de dispositivo mediante los valores especificados.
CDC::SetDCBrushColor Establece el color del pincel actual.
CDC::SetDCPenColor Establece el color del lápiz actual.
CDC::SetGraphicsMode Establece el modo gráfico actual para el contexto de dispositivo especificado.
CDC::SetLayout Cambia el diseño de un contexto de dispositivo (DC).
CDC::SetMapMode Establece el modo de asignación actual.
CDC::SetMapperFlags Modifica el algoritmo que el asignador de fuentes usa cuando asigna fuentes lógicas a fuentes físicas.
CDC::SetMiterLimit Establece el límite de la longitud de las uniones angulares para el contexto de dispositivo.
CDC::SetOutputDC Establece m_hDC, el contexto de dispositivo de salida.
CDC::SetPixel Establece el píxel del punto especificado en la aproximación más cercana al color especificado.
CDC::SetPixelV Establece el píxel de las coordenadas especificadas en la aproximación más cercana al color especificado. SetPixelV es más rápido que SetPixel porque no es necesario devolver el valor de color del punto pintado.
CDC::SetPolyFillMode Establece el modo de relleno de polígono.
CDC::SetROP2 Establece el modo de dibujo actual.
CDC::SetStretchBltMode Establece el modo de extensión de mapa de bits.
CDC::SetTextAlign Establece las marcas de alineación de texto.
CDC::SetTextCharacterExtra Establece la cantidad de espaciado entre caracteres.
CDC::SetTextColor Establece el color del texto.
CDC::SetTextJustification Agrega espacio a los caracteres de salto de una cadena.
CDC::SetViewportExt Establece las extensiones x e y del área de visualización.
CDC::SetViewportOrg Establece el origen del área de visualización.
CDC::SetWindowExt Establece las extensiones x e y de la ventana asociada.
CDC::SetWindowOrg Establece el origen de la ventana del contexto de dispositivo.
CDC::SetWorldTransform Establece la transformación actual del espacio global al espacio de página.
CDC::StartDoc Informa al controlador de dispositivo de que se está iniciando un nuevo trabajo de impresión.
CDC::StartPage Informa al controlador de dispositivo de que se está iniciando una página nueva.
CDC::StretchBlt Mueve un mapa de bits desde un rectángulo y dispositivo de origen hasta un rectángulo de destino, para lo que se extiende o se comprime el mapa de bits si es necesario para que se ajuste a las dimensiones del rectángulo de destino.
CDC::StrokeAndFillPath Cierra cualquier figura abierta de un trazado, traza el contorno del trazado con el lápiz actual y rellena su interior con el pincel actual.
CDC::StrokePath Representa el trazado especificado con el lápiz actual.
CDC::TabbedTextOut Escribe una cadena de caracteres en una ubicación especificada, para lo que expande las tabulaciones a los valores especificados en una matriz de posiciones de tabulación.
CDC::TextOut Escribe una cadena de caracteres en una ubicación especificada con la fuente seleccionada actualmente.
CDC::TransparentBlt Transfiere un bloque de bits de datos de color desde el contexto de dispositivo de origen especificado hasta un contexto de dispositivo de destino, y hace transparente un color especificado en la transferencia.
CDC::UpdateColors Actualiza el área cliente del contexto de dispositivo, para lo que hace coincidir los colores actuales del área cliente con la paleta del sistema píxel a píxel.
CDC::WidenPath Redefine el trazado actual como el área que se pintaría si dicho trazado se trazase con el lápiz seleccionado actualmente en el contexto de dispositivo.

Operadores públicos

Nombre Descripción
CDC::operator HDC Recupera el identificador del contexto de dispositivo.

Miembros de datos públicos

Nombre Descripción
CDC::m_hAttribDC Contexto de dispositivo de atributo usado por este objeto CDC.
CDC::m_hDC Contexto de dispositivo de salida usado por este objeto CDC.

Comentarios

El CDC objeto proporciona funciones miembro para trabajar con un contexto de dispositivo, como una pantalla o impresora, y los miembros para trabajar con un contexto de visualización asociado al área cliente de una ventana.

Realice todo el dibujo mediante las funciones miembro de un objeto CDC. La clase proporciona funciones miembro para las operaciones de contexto de dispositivo, el trabajo con herramientas de dibujo, la selección de objetos de interfaz de dispositivo gráfico (GDI) con seguridad de tipos y el trabajo con colores y paletas. También proporciona funciones miembro para obtener y establecer atributos de dibujo, realizar asignaciones, trabajar con el área de visualización, trabajar con la extensión de la ventana, convertir coordenadas, trabajar con regiones, recortar, dibujar líneas, y dibujar formas simples, elipses y polígonos. También se proporcionan funciones miembro para dibujar texto, trabajar con fuentes, usar escapes de impresora, desplazarse y reproducir metarchivos.

Para usar un objeto CDC, constrúyalo y llame a sus funciones miembro que ejecutan en paralelo funciones de Windows que usan contextos de dispositivo.

Nota:

En Windows 95/98, todas las coordenadas de pantalla están limitadas a 16 bits. Por lo tanto, un objeto int pasado a una función miembro CDC debe estar en el intervalo de -32768 a 32767.

La biblioteca MCF (Microsoft Foundation Class) proporciona varias clases derivadas de CDC para usos específicos. CPaintDC encapsula las llamadas a BeginPaint y EndPaint. CClientDC administra un contexto de visualización asociado al área cliente de una ventana. CWindowDC administra un contexto de visualización asociado a una ventana completa, incluidos su marco y controles. CMetaFileDC asocia un contexto de dispositivo a un metarchivo.

CDC proporciona dos funciones miembro y GetLayout SetLayout, para revertir el diseño de un contexto de dispositivo, que no hereda su diseño de una ventana. Esta orientación de derecha a izquierda es necesaria para las aplicaciones escritas para las referencias culturales, como árabe o hebreo, donde el diseño de caracteres no es el estándar europeo.

CDC contiene dos contextos de dispositivo, m_hDC y m_hAttribDC, que, cuando se crea un objeto CDC, hacen referencia al mismo dispositivo. CDC dirige todas las llamadas de GDI de salida a m_hDC y la mayoría de las llamadas de GDI de atributo a m_hAttribDC. (Un ejemplo de una llamada de atributo es GetTextColor, mientras que SetTextColor es una llamada de salida).

Por ejemplo, el marco usa estos dos contextos de dispositivo para implementar un objeto CMetaFileDC que enviará la salida a un metarchivo mientras lee los atributos de un dispositivo físico. La vista previa de impresión se implementa en el marco de forma similar. También puede usar los dos contextos de dispositivo de forma similar en el código específico de la aplicación.

A veces podría necesitar información de métricas de texto de los contextos de dispositivo m_hDC y m_hAttribDC. Los siguientes pares de funciones proporcionan esta funcionalidad:

Usa m_hAttribDC Usa m_hDC
GetTextExtent GetOutputTextExtent
GetTabbedTextExtent GetOutputTabbedTextExtent
GetTextMetrics GetOutputTextMetrics
GetCharWidth GetOutputCharWidth

Para obtener más información sobre CDC, consulte Contextos de dispositivo.

Jerarquía de herencia

CObject

CDC

Requisitos

Encabezado: afxwin.h

CDC::AbortDoc

Finaliza el trabajo de impresión actual y borra todo lo que la aplicación ha escrito en el dispositivo desde la última llamada a la función miembro StartDoc.

int AbortDoc();

Valor devuelto

Un valor mayor o igual que 0 si se realiza correctamente, o un valor negativo si se ha producido un error. En la lista siguiente se muestran los valores de error comunes y sus significados:

  • SP_ERROR: error general.

  • SP_OUTOFDISK: no hay suficiente espacio en disco disponible actualmente para la cola y no habrá más espacio disponible.

  • SP_OUTOFMEMORY: no hay suficiente memoria disponible para la cola.

  • SP_USERABORT: el usuario finalizó el trabajo con el Administrador de impresión.

Comentarios

Esta función miembro reemplaza el escape de impresora ABORTDOC.

Debe usarse AbortDoc para finalizar lo siguiente:

  • Operaciones de impresión que no especifican una función abort mediante SetAbortProc.

  • Operaciones de impresión que aún no han alcanzado su primera llamada de escape NEWFRAME o NEXTBAND.

Si una aplicación encuentra un error de impresión o una operación de impresión cancelada, no debe intentar finalizar la operación mediante las funciones miembro EndDoc o AbortDoc de la clase CDC. GDI finaliza automáticamente la operación antes de devolver el valor de error.

Si la aplicación muestra un cuadro de diálogo para permitir al usuario cancelar la operación de impresión, debe llamar a AbortDoc antes de destruir el cuadro de diálogo.

Si se usó el Administrador de impresión para iniciar el trabajo de impresión, al llamar se AbortDoc borra todo el trabajo de cola, la impresora no recibe nada. Si el Administrador de impresión no se usó para iniciar el trabajo de impresión, es posible que los datos se hayan enviado a la impresora antes AbortDoc de llamarse. En este caso, el controlador de impresora habría restablecido la impresora (en caso de que fuera posible) y cerrado el trabajo de impresión.

Ejemplo

Vea el ejemplo de CDC::StartDoc.

CDC::AbortPath

Cierra y descarta los trazados del contexto de dispositivo.

BOOL AbortPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Si hay un corchete de ruta de acceso abierto en el contexto del dispositivo, se cierra el corchete de ruta de acceso y se descarta la ruta de acceso. Si hay una ruta de acceso cerrada en el contexto del dispositivo, se descarta la ruta de acceso.

CDC::AddMetaFileComment

Copia el comentario de un búfer en un metarchivo especificado de formato mejorado.

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

Parámetros

nDataSize
Especifica la longitud del búfer de comentarios en bytes.

pCommentData
Apunta al búfer que contiene el comentario.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Un comentario puede incluir cualquier información privada, por ejemplo, el origen de la imagen y la fecha en que se creó. Un comentario debe comenzar con una firma de aplicación, seguida de los datos. Los comentarios no deben contener datos específicos de la posición. Los datos específicos de la posición especifican la ubicación de un registro y no se deben incluir porque un metarchivo se puede incrustar dentro de otro metarchivo. Esta función solo se puede usar con metarchivos mejorados.

CDC::AlphaBlend

Llame a esta función miembro para mostrar mapas de bits que tienen píxeles transparentes o semitransparentes.

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

Parámetros

xDest
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.

yDest
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.

nDestWidth
Especifica el ancho, en unidades lógicas, del rectángulo de destino.

nDestHeight
Especifica el alto, en unidades lógicas, del rectángulo de destino.

pSrcDC
Puntero al contexto de dispositivo de origen.

xSrc
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.

ySrc
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.

nSrcWidth
Especifica el ancho, en unidades lógicas, del rectángulo de origen.

nSrcHeight
Especifica el alto, en unidades lógicas, del rectángulo de origen.

blend
Especifica una estructura BLENDFUNCTION.

Valor devuelto

TRUE si es correcto; de lo contrario, FALSE.

Comentarios

Para obtener más información, consulte el método AlphaBlend en Windows SDK.

CDC::AngleArc

Dibuja un segmento de línea y un arco.

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

Parámetros

x
Especifica la coordenada x lógica del centro del círculo.

y
Especifica la coordenada y lógica del centro del círculo.

nRadius
Especifica el radio del círculo en unidades lógicas. Este valor debe ser positivo.

fStartAngle
Especifica el ángulo inicial en grados en relación con el eje x.

fSweepAngle
Especifica el ángulo de barrido en grados en relación con el ángulo inicial.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

El segmento de línea se dibuja desde la posición actual hasta el principio del arco. El arco se dibuja a lo largo del perímetro de un círculo con el radio y el centro especificados. La longitud del arco se define mediante los ángulos inicial y de barrido especificados.

AngleArc mueve la posición actual al punto final del arco. El arco dibujado por esta función puede parecer elíptico, según el modo de transformación y asignación actual. Antes de dibujar el arco, esta función dibuja el segmento de línea desde la posición actual hasta el principio del arco. Para dibujar el arco, se construye un círculo imaginario con el radio especificado alrededor del punto central especificado. Para determinar el punto inicial del arco, se mide el número de grados del ángulo inicial en sentido contrario a las agujas del reloj desde el eje x del círculo. El punto final se determina de forma similar; para ello, se mide el número de grados del ángulo de barrido en sentido contrario a las agujas del reloj desde el punto inicial.

Si el ángulo de barrido tiene más de 360 grados, el arco realiza un barrido varias veces. Esta función dibuja líneas con el lápiz actual. La figura no se rellena.

CDC::Arc

Dibuja un arco elíptico.

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);

Parámetros

x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).

y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).

x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).

y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).

x3
Especifica la coordenada x del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

y3
Especifica la coordenada y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

x4
Especifica la coordenada x del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

y4
Especifica la coordenada y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un objeto LPRECT o CRect para este parámetro.

ptStart
Especifica las coordenadas x e y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT estructura o un CPoint objeto para este parámetro.

ptEnd
Especifica las coordenadas x e y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT estructura o un CPoint objeto para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El arco dibujado mediante la función es un segmento de la elipse definido por el rectángulo delimitador especificado.

El punto inicial real del arco es el punto en el que un radio dibujado desde el centro del rectángulo delimitador y que pasa por el punto inicial especificado forma una intersección con la elipse. El punto final real del arco es el punto en el que un radio dibujado desde el centro del rectángulo delimitador y que pasa por el punto final especificado forma una intersección con la elipse. El arco se dibuja en sentido contrario a las agujas del reloj. Dado que un arco no es una figura cerrada, no se rellena. Tanto el ancho como el alto del rectángulo deben tener más de 2 unidades y menos de 32 767.

Ejemplo

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

Dibuja un arco elíptico.

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);

Parámetros

x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).

y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).

x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).

y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).

x3
Especifica la coordenada x del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

y3
Especifica la coordenada y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

x4
Especifica la coordenada x del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

y4
Especifica la coordenada y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un puntero a una estructura de datos RECT o a un objeto CRect para este parámetro.

ptStart
Especifica las coordenadas x e y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT estructura de datos o un CPoint objeto para este parámetro.

ptEnd
Especifica las coordenadas x e y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT estructura de datos o un CPoint objeto para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función es similar a CDC::Arc, salvo que se actualiza la posición actual. Los puntos (x1, y1) y (x2, y2) especifican el rectángulo delimitador. Una elipse formada por el rectángulo delimitador especificado define la curva del arco. El arco se extiende en sentido contrario a las agujas del reloj (la dirección predeterminada del arco) desde el punto donde forma una intersección con la línea radial desde el centro del rectángulo delimitador hasta (*x3*, y3). El arco termina donde forma una intersección con la línea radial desde el centro del rectángulo delimitador hasta (x4, y4). Si el punto inicial y el punto final son el mismo, se dibuja una elipse completa.

Una línea se dibuja desde la posición actual hasta el punto inicial del arco. Si no se produce ningún error, la posición actual se establece en el punto final del arco. El arco se dibuja utilizando el lápiz actual; no está lleno.

CDC::Attach

Use esta función miembro para adjuntar hDC al objeto CDC.

BOOL Attach(HDC hDC);

Parámetros

hDC
Un contexto de dispositivo de Windows.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

hDC se almacena en m_hDC (el contexto de dispositivo de salida) y en m_hAttribDC (el contexto de dispositivo de atributo).

CDC::BeginPath

Abre un corchete de trazado en el contexto de dispositivo.

BOOL BeginPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Una vez que se abre un corchete de trazado, una aplicación puede empezar a llamar a funciones de dibujo de GDI para definir los puntos que se encuentran en el trazado. Una aplicación puede cerrar un corchete de trazado abierto mediante una llamada a la función miembro EndPath. Cuando una aplicación llama a BeginPath, se descartan los trazados anteriores.

Consulte BeginPath en Windows SDK para obtener una lista de las funciones de dibujo que definen puntos en un trazado.

Ejemplo

// 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

Copia un mapa de bits desde el contexto del dispositivo de origen a este contexto de dispositivo actual.

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

Parámetros

x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo de destino.

y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo de destino.

nWidth
Especifica el ancho (en unidades lógicas) del rectángulo de destino y del mapa de bits de origen.

nHeight
Especifica el alto (en unidades lógicas) del rectángulo de destino y del mapa de bits de origen.

pSrcDC
Puntero a un objeto CDC que identifica el contexto de dispositivo desde el que se copiará el mapa de bits. Debe ser NULL si dwRop especifica una operación de trama que no incluye un origen.

xSrc
Especifica la coordenada x lógica de la esquina superior izquierda del mapa de bits de origen.

ySrc
Especifica la coordenada y lógica de la esquina superior izquierda del mapa de bits de origen.

dwRop
Especifica la operación de trama que se va a realizar. Los códigos de operación de trama definen cómo combina GDI los colores en las operaciones de salida que implican un pincel actual, un posible mapa de bits de origen y un mapa de bits de destino. Consulte BitBlt en Windows SDK para obtener una lista de los códigos de operación de trama para dwRop y sus descripciones.

Para obtener una lista completa de los códigos de operación de trama, consulte Acerca de los códigos de operación de trama en Windows SDK.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

La aplicación puede alinear las ventanas o áreas cliente en límites de bytes para asegurarse de que las operaciones BitBlt se producen en rectángulos alineados por bytes. (Establezca las marcas CS_BYTEALIGNWINDOW o CS_BYTEALIGNCLIENT al registrar las clases de ventana).

BitBlt Las operaciones en rectángulos alineados por bytes son considerablemente más rápidas que BitBlt las operaciones en rectángulos que no están alineados por bytes. Si desea especificar estilos de clase como la alineación de bytes para su propio contexto de dispositivo, tendrá que registrar una clase de ventana en lugar de confiar en las clases de Microsoft Foundation para que lo haga automáticamente. Use la función global AfxRegisterWndClass.

GDI transforma nWidth y nHeight, una vez mediante el contexto de dispositivo de destino y otra vez mediante el contexto de dispositivo de origen. Si las extensiones resultantes no coinciden, GDI usa la función de Windows StretchBlt para comprimir o ampliar el mapa de bits de origen según sea necesario.

Si los mapas de bits de destino, origen y patrón no tienen el mismo formato de color, la BitBlt función convierte los mapas de bits de origen y patrón para que coincidan con el destino. En la conversión se usan los colores de primer plano y de fondo del mapa de bits de destino.

Cuando la función BitBlt convierte un mapa de bits monocromo a color, establece los bits blancos (1) al color de fondo y los bits negros (0) al color de primer plano. Se usan los colores de primer plano y de fondo del contexto de dispositivo de destino. Para convertir de color a monocromo, BitBlt establece en blanco los píxeles que coinciden con el color de fondo y establece en negro todos los demás píxeles. BitBlt usa los colores de primer plano y de fondo del contexto de dispositivo de color para convertir de color a monocromo.

No todos los contextos de dispositivo admiten BitBlt. Para comprobar si un contexto de dispositivo determinado admite BitBlt, use la función miembro GetDeviceCaps y especifique el índice RASTERCAPS.

Ejemplo

Vea el ejemplo de CDC::CreateCompatibleDC.

CDC::CDC

Construye un objeto CDC.

CDC();

CDC::Chord

Dibuja una cuerda (una figura cerrada delimitada por la intersección de una elipse y un segmento de línea).

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);

Parámetros

x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador de la cuerda (en unidades lógicas).

y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador de la cuerda (en unidades lógicas).

x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador de la cuerda (en unidades lógicas).

y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador de la cuerda (en unidades lógicas).

x3
Especifica la coordenada x del punto que define el punto inicial de la cuerda (en unidades lógicas).

y3
Especifica la coordenada y del punto que define el punto inicial de la cuerda (en unidades lógicas).

x4
Especifica la coordenada x del punto que define el punto final de la cuerda (en unidades lógicas).

y4
Especifica la coordenada y del punto que define el punto final de la cuerda (en unidades lógicas).

lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un objeto LPRECT o CRect para este parámetro.

ptStart
Especifica las coordenadas x e y del punto que define el punto inicial de la cuerda (en unidades lógicas). Este punto no tiene que mentir exactamente en el acorde. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

*ptEnd*
Especifica las coordenadas x e y del punto que define el punto final de la cuerda (en unidades lógicas). Este punto no tiene que mentir exactamente en el acorde. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Los parámetros (x1, y1) y (x2, y2) especifican las esquinas superior izquierda e inferior derecha, respectivamente, de un rectángulo que delimita la elipse que forma parte de la cuerda. Los parámetros (x3, y3) y (x4, y4) especifican los extremos de una línea que forma una intersección con la elipse. La cuerda se dibuja con el lápiz seleccionado y se rellena con el pincel seleccionado.

La ilustración dibujada por la Chord función se extiende hasta , pero no incluye las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2 - y1 y el ancho es x2 - x1.

Ejemplo

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

Cierra una figura abierta en un trazado.

BOOL CloseFigure();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Para cerrar la figura, la función dibuja una línea desde la posición actual hasta el primer punto de la figura (normalmente, el punto especificado por la llamada más reciente a la función miembro MoveTo) y conecta las líneas mediante el estilo de unión de líneas. Si una figura se cierra mediante la función miembro LineTo, en lugar de CloseFigure, se usan extremos para crear la esquina, en lugar de una unión. CloseFigure solo se debe llamar a si hay un corchete de ruta de acceso abierto en el contexto del dispositivo.

Se abre una figura de una ruta de acceso a menos que se cierre explícitamente mediante esta función. (Una figura puede estar abierta incluso si su punto actual y su punto inicial son los mismos). Cualquier línea o curva agregada al trazado después de CloseFigure inicia una figura nueva.

CDC::CreateCompatibleDC

Crea un contexto de dispositivo de memoria que es compatible con el dispositivo especificado por pDC.

BOOL CreateCompatibleDC(CDC* pDC);

Parámetros

pDC
Puntero a un contexto de dispositivo. Si pDC es NULL, la función crea un contexto de dispositivo de memoria que es compatible con la visualización del sistema.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Un contexto de dispositivo de memoria es un bloque de memoria que representa una superficie de visualización. Se puede usar para preparar imágenes en memoria antes de copiarlas en la superficie real del dispositivo compatible.

Cuando se crea un contexto de dispositivo de memoria, GDI selecciona automáticamente para él un mapa de bits monocromo de 1 a 1. Las funciones de salida de GDI solo se pueden usar con un contexto de dispositivo de memoria si se ha creado y seleccionado un mapa de bits en ese contexto.

Esta función solo se puede usar para crear contextos de dispositivo compatibles para los dispositivos que admiten operaciones de trama. Consulte la función miembro CDC::BitBlt para obtener información sobre las transferencias de bloques de bits entre contextos de dispositivo. Para determinar si un contexto de dispositivo admite las operaciones de trama, consulte la funcionalidad de trama RC_BITBLT en la función miembro CDC::GetDeviceCaps.

Ejemplo

// 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

Crea un contexto de dispositivo para el dispositivo especificado.

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

Parámetros

lpszDriverName
Apunta a una cadena terminada en null que especifica el nombre de archivo (sin extensión) del controlador de dispositivo (por ejemplo, "EPSON"). También puede pasar un objeto CString para este parámetro.

lpszDeviceName
Apunta a una cadena terminada en null que especifica el nombre del dispositivo específico que se va a admitir (por ejemplo, "EPSON FX-80"). Se usa el parámetro lpszDeviceName si el módulo admite más de un dispositivo. También puede pasar un objeto CString para este parámetro.

lpszOutput
Apunta a una cadena terminada en null que especifica el nombre de dispositivo o archivo para el medio de salida físico (puerto de salida o archivo). También puede pasar un objeto CString para este parámetro.

lpInitData
Apunta a una estructura DEVMODE que contiene datos de inicialización específicos del dispositivo para el controlador de dispositivo. La función DocumentProperties de Windows recupera esta estructura rellenada para un dispositivo determinado. El parámetro lpInitData debe ser NULL si el controlador de dispositivo debe usar la inicialización predeterminada (si existe) que el usuario ha especificado en el Panel de control.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Se requiere el archivo de encabezado PRINT.H si se usa la estructura DEVMODE.

Los nombres de dispositivo siguen estas convenciones. Se recomienda usar dos puntos finales (:), pero es opcional. Windows quita los dos puntos finales para que un nombre de dispositivo que termine con dos puntos se asigne al mismo puerto que el mismo nombre sin los dos puntos. Los nombres de controlador y puerto no deben contener espacios iniciales o finales. Las funciones de salida de GDI no se pueden usar con contextos de información.

CDC::CreateIC

Crea un contexto de información para el dispositivo especificado.

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

Parámetros

lpszDriverName
Apunta a una cadena terminada en null que especifica el nombre de archivo (sin extensión) del controlador de dispositivo (por ejemplo, "EPSON"). Puede pasar un objeto CString para este parámetro.

lpszDeviceName
Apunta a una cadena terminada en null que especifica el nombre del dispositivo específico que se va a admitir (por ejemplo, "EPSON FX-80"). Se usa el parámetro lpszDeviceName si el módulo admite más de un dispositivo. Puede pasar un objeto CString para este parámetro.

lpszOutput
Apunta a una cadena terminada en null que especifica el nombre de dispositivo o archivo para el medio de salida físico (puerto o archivo). Puede pasar un objeto CString para este parámetro.

lpInitData
Apunta a los datos de inicialización específicos del dispositivo para el controlador de dispositivo. El parámetro lpInitData debe ser NULL si el controlador de dispositivo debe usar la inicialización predeterminada (si existe) que el usuario ha especificado en el Panel de control. Consulte CreateDC para ver el formato de datos para la inicialización específica del dispositivo.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

El contexto de información proporciona una manera rápida de obtener información sobre el dispositivo sin necesidad de crear un contexto de dispositivo.

Los nombres de dispositivo siguen estas convenciones. Se recomienda usar dos puntos finales (:), pero es opcional. Windows quita los dos puntos finales para que un nombre de dispositivo que termine con dos puntos se asigne al mismo puerto que el mismo nombre sin los dos puntos. Los nombres de controlador y puerto no deben contener espacios iniciales o finales. Las funciones de salida de GDI no se pueden usar con contextos de información.

CDC::DeleteDC

En general, no llame a esta función; el destructor lo hará por usted.

BOOL DeleteDC();

Valor devuelto

Distinto de cero si la operación se ha realizado correctamente; en caso contrario, cero.

Comentarios

La función miembro DeleteDC elimina los contextos de dispositivo de Windows que están asociados con m_hDC en el objeto CDC actual. Si este CDC objeto es el último contexto de dispositivo activo para un dispositivo determinado, se liberan todos los recursos de almacenamiento y sistema utilizados por el dispositivo.

Una aplicación no debe llamar DeleteDC a si se han seleccionado objetos en el contexto del dispositivo. Los objetos deben seleccionarse primero fuera del contexto del dispositivo antes de eliminarlos.

Una aplicación no debe eliminar un contexto de dispositivo cuyo identificador se haya obtenido mediante una llamada a CWnd::GetDC. En su lugar, debe llamar a CWnd::ReleaseDC para liberar el contexto de dispositivo. Las clases CClientDC y CWindowDC se proporcionan para encapsular esta funcionalidad.

La función DeleteDC se usa generalmente para eliminar contextos de dispositivo creados con CreateDC, CreateIC o CreateCompatibleDC.

Ejemplo

Vea el ejemplo de CPrintDialog::GetPrinterDC.

CDC::DeleteTempMap

Llamado automáticamente por el CWinApp controlador de tiempo de inactividad, DeleteTempMap elimina los objetos temporales CDC creados por FromHandle, pero no destruye los identificadores (hDCs) de contexto del dispositivo asociados temporalmente a los CDC objetos.

static void PASCAL DeleteTempMap();

CDC::Detach

Llame a esta función para desasociar m_hDC (el contexto de dispositivo de salida) del objeto CDC y establecer m_hDC y m_hAttribDC en NULL.

HDC Detach();

Valor devuelto

Un contexto de dispositivo de Windows.

CDC::DPtoHIMETRIC

Use esta función cuando asigne tamaños HIMETRIC a OLE, lo que convierte los píxeles en HIMETRIC.

void DPtoHIMETRIC(LPSIZE lpSize) const;

Parámetros

lpSize
Apunta a una estructura SIZE o un objeto CSize.

Comentarios

Si el modo de asignación del objeto de contexto del dispositivo es MM_LOENGLISH, MM_HIENGLISH, MM_LOMETRIC o MM_HIMETRIC, la conversión se basa en el número de píxeles de la pulgada física. Si el modo de asignación es uno de los otros modos no restringidos (por ejemplo, MM_TEXT), la conversión se basa en el número de píxeles de la pulgada lógica.

CDC::DPtoLP

Convierte las unidades de dispositivo en unidades lógicas.

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

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

Parámetros

lpPoints
Apunta a una matriz de estructuras POINT u objetos CPoint.

nCount
Número de puntos de la matriz.

lpRect
Apunta a una estructura RECT o un objeto CRect. Este parámetro se usa para el sencillo caso de convertir un rectángulo de puntos de dispositivo a puntos lógicos.

lpSize
Apunta a una estructura SIZE o un objeto CSize.

Comentarios

La función asigna las coordenadas de cada punto, o dimensión de un tamaño, del sistema de coordenadas del dispositivo al sistema de coordenadas lógicas de GDI. La conversión depende del modo de asignación actual y de la configuración de los orígenes y extensiones de la ventana y el área de visualización del dispositivo.

CDC::Draw3dRect

Llame a esta función miembro para dibujar un rectángulo tridimensional.

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

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

Parámetros

lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un puntero a una estructura RECT o a un objeto CRect para este parámetro.

clrTopLeft
Especifica el color de los lados superior e izquierdo del rectángulo tridimensional.

clrBottomRight
Especifica el color de los lados inferior y derecho del rectángulo tridimensional.

x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo tridimensional.

y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo tridimensional.

cx
Especifica el ancho del rectángulo tridimensional.

cy
Especifica el alto del rectángulo tridimensional.

Comentarios

El rectángulo se dibujará con los lados superior e izquierdo del color especificado por clrTopLeft, y los lados inferior y derecho del color especificado por clrBottomRight.

Ejemplo

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

Llame a esta función miembro repetidamente para volver a dibujar un rectángulo de arrastre.

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

Parámetros

lpRect
Apunta a una estructura RECT o un objeto CRect que especifica las coordenadas lógicas de un rectángulo, en este caso, la posición final del rectángulo que se vuelve a dibujar.

size
Especifica el desplazamiento desde la esquina superior izquierda del borde externo hasta la esquina superior izquierda del borde interno (es decir, el grosor del borde) de un rectángulo.

lpRectLast
Apunta a una estructura RECT o un objeto CRect que especifica las coordenadas lógicas de la posición de un rectángulo, en este caso, la posición origen del rectángulo que se vuelve a dibujar.

sizeLast
Especifica el desplazamiento desde la esquina superior izquierda del borde externo hasta la esquina superior izquierda del borde interno (es decir, el grosor del borde) del rectángulo original que se vuelve a dibujar.

pBrush
Puntero a un objeto de pincel. Establézcalo en NULL para usar el pincel de semitonos predeterminado.

pBrushLast
Puntero al último objeto de pincel usado. Establézcalo en NULL para usar el pincel de semitonos predeterminado.

Comentarios

Llámelo en un bucle a medida que muestree la posición del mouse para proporcionar comentarios visuales. Cuando se llama a DrawDragRect, se borra el rectángulo anterior y se dibuja uno nuevo. Por ejemplo, cuando el usuario arrastre un rectángulo a lo largo de la pantalla, DrawDragRect borrará el rectángulo original y volverá a dibujar uno nuevo en su nueva posición. De forma predeterminada, DrawDragRect dibuja el rectángulo con un pincel de semitonos para eliminar el parpadeo y crear la apariencia de un rectángulo que se mueve suavemente.

La primera vez que llame a DrawDragRect, el parámetro lpRectLast debe ser NULL.

CDC::DrawEdge

Llame a esta función miembro para dibujar los bordes de un rectángulo del tipo y estilo especificados.

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

Parámetros

lpRect
Puntero a una estructura RECT que contiene las coordenadas lógicas del rectángulo.

nEdge
Especifica el tipo de borde interno y externo que se va a dibujar. Este parámetro debe ser una combinación de una marca de borde interno y una marca de borde externo. Consulte DrawEdge en Windows SDK para obtener una tabla de los tipos del parámetro.

nFlags
Marcas que especifican el tipo de borde que se va a dibujar. Consulte DrawEdge en Windows SDK para obtener una tabla de los valores del parámetro. En el caso de las líneas diagonales, las marcas BF_RECT especifican el punto final del vector limitado por el parámetro de rectángulo.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

CDC::DrawEscape

Accede a las funcionalidades de dibujo de una pantalla de vídeo que no están disponibles directamente a través de la interfaz de dispositivo gráfico (GDI).

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

Parámetros

nEscape
Especifica la función de escape que se va a realizar.

nInputSize
Especifica el número de bytes de los datos a los que apunta el parámetro lpszInputData.

lpszInputData
Apunta a la estructura de entrada necesaria para el escape especificado.

Valor devuelto

Especifica el resultado de la función . Mayor que cero si se ejecuta correctamente, excepto para el QUERYESCSUPPORT escape de dibujo, que comprueba solo la implementación; o cero si no se implementa el escape; o menor que cero si se produjo un error.

Comentarios

Cuando una aplicación llama a DrawEscape, los datos identificados por nInputSize y lpszInputData se pasan directamente al controlador de visualización especificado.

CDC::DrawFocusRect

Dibuja un rectángulo con el estilo usado para indicar que el rectángulo tiene el foco.

void DrawFocusRect(LPCRECT lpRect);

Parámetros

lpRect
Apunta a una estructura RECT o un objeto CRect que especifica las coordenadas lógicas del rectángulo que se va a dibujar.

Comentarios

Puesto que se trata de una función XOR booleana (^), si se llama a esta función una segunda vez con el mismo rectángulo, se quita el rectángulo de la pantalla. No es posible desplazarse por el rectángulo dibujado por esta función. Para desplazarse por un área que contiene un rectángulo dibujado por esta función, primero llame a DrawFocusRect para quitar el rectángulo de la visualización y, luego, desplácese por el área y vuelva a llamar a DrawFocusRect para dibujar el rectángulo en la nueva posición.

Precaución

DrawFocusRect solo funciona en modo MM_TEXT. En otros modos, esta función no dibuja correctamente el rectángulo de foco, pero no devuelve valores de error.

CDC::DrawFrameControl

Llame a esta función miembro para dibujar un control de marco del tipo y estilo especificados.

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

Parámetros

lpRect
Puntero a una estructura RECT que contiene las coordenadas lógicas del rectángulo.

nType
Especifica el tipo de control de marco que se va a dibujar. Consulte el parámetro uType en DrawFrameControl en Windows SDK para obtener una lista de los valores posibles de este parámetro.

nState
Especifica el estado inicial del control de marco. Puede ser uno o varios de los valores que se describen para el parámetro uState en DrawFrameControl en Windows SDK. Use el valor nState DFCS_ADJUSTRECT para ajustar el rectángulo delimitador para excluir el borde circundante del botón de comando.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

En varios casos, nState depende del parámetro nType. En la lista siguiente se muestra la relación entre los cuatro valores nType y nState:

  • DFC_BUTTON

    • DFCS_BUTTON3STATE: botón de tres estados

    • DFCS_BUTTONCHECK: casilla de verificación

    • DFCS_BUTTONPUSH: botón de comando

    • DFCS_BUTTONRADIO: botón de radio

    • DFCS_BUTTONRADIOIMAGE: imagen para el botón de radio (si no es cuadrado, necesita una imagen)

    • DFCS_BUTTONRADIOMASK: máscara para el botón de radio (si no es cuadrado, necesita una máscara)

  • DFC_CAPTION

    • DFCS_CAPTIONCLOSE: botón Cerrar

    • DFCS_CAPTIONHELP: botón Ayuda

    • DFCS_CAPTIONMAX: botón Maximizar

    • DFCS_CAPTIONMIN: botón Minimizar

    • DFCS_CAPTIONRESTORE: botón Restaurar

  • DFC_MENU

    • DFCS_MENUARROW: flecha de submenú

    • DFCS_MENUBULLET: viñeta

    • DFCS_MENUCHECK: marca de verificación

  • DFC_SCROLL

    • DFCS_SCROLLCOMBOBOX: barra de desplazamiento de cuadro combinado

    • DFCS_SCROLLDOWN: flecha abajo de barra de desplazamiento

    • DFCS_SCROLLLEFT: flecha izquierda de barra de desplazamiento

    • DFCS_SCROLLRIGHT: flecha derecha de barra de desplazamiento

    • DFCS_SCROLLSIZEGRIP: control de ajuste de tamaño de la esquina inferior derecha de la ventana

    • DFCS_SCROLLUP: flecha arriba de barra de desplazamiento

Ejemplo

Este código dibuja el control de ajuste de tamaño en la esquina inferior derecha de la ventana. Es adecuado para el controlador OnPaint de un cuadro de diálogo, que no tiene estilos y normalmente no contiene otros controles (como una barra de estado) que podrían proporcionarle un control de ajuste de tamaño.

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

Dibuja un icono en el dispositivo representado por el objeto CDC actual.

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

BOOL DrawIcon(
    POINT point,
    HICON hIcon);

Parámetros

x
Especifica la coordenada x lógica de la esquina superior izquierda del icono.

y
Especifica la coordenada y lógica de la esquina superior izquierda del icono.

hIcon
Identifica el identificador del icono que se va a dibujar.

point
Especifica las coordenadas x e y lógicas de la esquina superior izquierda del icono. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Distinto de cero si la operación se ha realizado correctamente; en caso contrario, cero.

Comentarios

La función coloca la esquina superior izquierda del icono en la ubicación especificada por x y y. La ubicación está sujeta al modo de asignación actual del contexto de dispositivo.

El recurso de icono debe haberse cargado previamente mediante las funciones CWinApp::LoadIcon, CWinApp::LoadStandardIcon o CWinApp::LoadOEMIcon. Debe seleccionarse el modo de asignación MM_TEXT antes de usar esta función.

Ejemplo

Vea el ejemplo de CWnd::IsIconic.

CDC::DrawState

Llame a esta función miembro para mostrar una imagen y aplicar un efecto visual para indicar un estado, como deshabilitado o predeterminado.

Nota:

Para todos los estados nFlag excepto DSS_NORMAL, la imagen se convierte en monocroma antes de aplicar el efecto visual.

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);

Parámetros

pt
Especifica la ubicación de la imagen.

size
Especifica el tamaño de la imagen.

hBitmap
Identificador de un mapa de bits.

nFlags
Marcas que especifican el tipo y el estado de la imagen. Consulte DrawState en Windows SDK para conocer los posibles tipos y estados de nFlags.

hBrush
Identificador de un pincel.

pBitmap
Puntero a un objeto CBitmap .

pBrush
Puntero a un objeto CBrush .

hIcon
Identificador de un icono.

lpszText
Puntero a texto.

bPrefixText
Texto que puede contener una tecla de acceso de acelerador. El parámetro lData especifica la dirección de la cadena y el parámetro nTextLen especifica la longitud. Si nTextLen es 0, se supone que la cadena termina en null.

nTextLen
Longitud de la cadena de texto a la que apunta lpszText. Si nTextLen es 0, se supone que la cadena termina en null.

lpDrawProc
Puntero a una función de devolución de llamada que se usa para representar una imagen. Este parámetro es necesario si el tipo de imagen de nFlags es DST_COMPLEX. Es opcional y puede ser NULL si el tipo de imagen es DST_TEXT. En el caso de los demás tipos de imagen, este parámetro se omite. Para obtener más información sobre la función de devolución de llamada, consulte la función DrawStateProc en Windows SDK.

lData
Especifica información sobre la imagen. El significado de este parámetro depende del tipo de imagen.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

CDC::DrawText

Llame a esta función miembro para dar formato al texto en el rectángulo especificado. Para especificar más opciones de formato, use CDC::DrawTextEx.

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

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

Parámetros

lpszString
Apunta a la cadena que se va a dibujar. Si nCount es -1, la cadena debe terminar en null.

nCount
Especifica el número de caracteres de la cadena. Si nCount es -1, se supone que lpszString es un puntero largo a una cadena terminada en null y DrawText calcula el recuento de caracteres automáticamente.

lpRect
Apunta a una estructura RECT o un objeto CRect que contiene el rectángulo (en coordenadas lógicas) en el que se va a dar formato al texto.

str
Objeto CString que contiene los caracteres especificados que se van a dibujar.

nFormat
Especifica el método de aplicación de formato al texto. Puede ser cualquier combinación de los valores que se describen para el parámetro uFormat en DrawText en Windows SDK. (Combínelos con el operador OR bit a bit).

Nota:

Algunas combinaciones de marcas uFormat pueden hacer que se modifique la cadena pasada. El uso de DT_MODIFYSTRING con DT_END_ELLIPSIS o DT_PATH_ELLIPSIS puede hacer que la cadena se modifique, lo que provoca una aserción en la invalidación CString. Los valores DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP y DT_NOPREFIX no pueden usarse con el valor DT_TABSTOP.

Valor devuelto

El alto del texto si la función se realiza correctamente.

Comentarios

Da formato al texto, para lo que expande tabulaciones en los espacios adecuados, alinea el texto a la izquierda, derecha o centro del rectángulo especificado y divide el texto en líneas que caben en el rectángulo especificado. El tipo de formato se especifica mediante nFormat.

Esta función miembro usa la fuente seleccionada del contexto de dispositivo, el color de texto y el color de fondo para dibujar el texto. A menos que se use el DT_NOCLIP formato, DrawText clips el texto para que el texto no aparezca fuera del rectángulo especificado. Se supone que todo el formato tiene varias líneas, a menos que se especifique el formato DT_SINGLELINE.

Si la fuente seleccionada es demasiado grande para el rectángulo especificado, la DrawText función miembro no intenta sustituir una fuente más pequeña.

Si se especifica la marca DT_CALCRECT, el rectángulo especificado por lpRect se actualizará para reflejar el ancho y el alto necesarios para dibujar el texto.

Si se ha establecido la marca de alineación de texto TA_UPDATECP (vea CDC::SetTextAlign), DrawText mostrará el texto que empieza en la posición actual, en lugar de a la izquierda del rectángulo especificado. DrawText no ajustará el texto cuando se haya establecido la TA_UPDATECP marca (es decir, la DT_WORDBREAK marca no tendrá ningún efecto).

El color del texto se puede establecer mediante CDC::SetTextColor.

CDC::DrawTextEx

Aplica formato al texto del rectángulo especificado.

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

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

Parámetros

lpszString
Apunta a la cadena que se va a dibujar. Si nCount es -1, la cadena debe terminar en null.

nCount
Especifica el número de caracteres de la cadena. Si nCount es -1, se supone que lpszString es un puntero largo a una cadena terminada en null y DrawText calcula el recuento de caracteres automáticamente.

lpRect
Apunta a una estructura RECT o un objeto CRect que contiene el rectángulo (en coordenadas lógicas) en el que se va a dar formato al texto.

str
Objeto CString que contiene los caracteres especificados que se van a dibujar.

nFormat
Especifica el método de aplicación de formato al texto. Puede ser cualquier combinación de los valores que se describen para el parámetro uFormat en DrawText en Windows SDK. (Combínelos con el operador OR bit a bit).

Nota:

Algunas combinaciones de marcas uFormat pueden hacer que se modifique la cadena pasada. El uso de DT_MODIFYSTRING con DT_END_ELLIPSIS o DT_PATH_ELLIPSIS puede hacer que la cadena se modifique, lo que provoca una aserción en la invalidación CString. Los valores DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP y DT_NOPREFIX no pueden usarse con el valor DT_TABSTOP.

lpDTParams
Puntero a una DRAWTEXTPARAMS estructura que especifica más opciones de formato. Este parámetro puede ser NULL.

Comentarios

Da formato al texto, para lo que expande tabulaciones en los espacios adecuados, alinea el texto a la izquierda, derecha o centro del rectángulo especificado y divide el texto en líneas que caben en el rectángulo especificado. El tipo de formato se especifica mediante nFormat y lpDTParams. Para obtener más información, consulte CDC::DrawText y DrawTextEx en Windows SDK.

El color del texto se puede establecer mediante CDC::SetTextColor.

CDC::Ellipse

Dibuja una elipse.

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

BOOL Ellipse(LPCRECT lpRect);

Parámetros

x1
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo delimitador de la elipse.

y1
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo delimitador de la elipse.

x2
Especifica la coordenada x lógica de la esquina inferior derecha del rectángulo delimitador de la elipse.

y2
Especifica la coordenada y lógica de la esquina inferior derecha del rectángulo delimitador de la elipse.

lpRect
Especifica el rectángulo delimitador de la elipse. También puede pasar un objeto CRect para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El centro de la elipse es el centro del rectángulo delimitador especificado por x1, y1, x2 y y2, o lpRect. La elipse se dibuja con el lápiz actual y su interior se rellena con el pincel actual.

La ilustración dibujada por esta función se extiende hasta, pero no incluye, las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2 - y1 y el ancho es x2 - x1.

Si el ancho o el alto del rectángulo delimitador es 0, no se dibuja ninguna elipse.

CDC::EndDoc

Finaliza un trabajo de impresión iniciado por una llamada a la función miembro StartDoc.

int EndDoc();

Valor devuelto

Mayor o igual que 0 si la función se realiza correctamente, o un valor negativo si se ha producido un error.

Comentarios

Esta función miembro reemplaza el escape de la impresora ENDDOC y debe llamarse a ella inmediatamente después de finalizar un trabajo de impresión correcto.

Si una aplicación encuentra un error de impresión o una operación de impresión cancelada, no debe intentar finalizar la operación mediante EndDoc o AbortDoc. GDI finaliza automáticamente la operación antes de devolver el valor de error.

Esta función no se debe usar dentro de los metarchivos.

Ejemplo

Vea el ejemplo de CDC::StartDoc.

CDC::EndPage

Informa al dispositivo de que la aplicación ha terminado de escribir en una página.

int EndPage();

Valor devuelto

Mayor o igual que 0 si la función se realiza correctamente, o un valor negativo si se ha producido un error.

Comentarios

Esta función miembro se usa normalmente para indicarle al controlador de dispositivo que avance a una página nueva.

Esta función miembro reemplaza el escape de impresora NEWFRAME. A diferencia de NEWFRAME, siempre se llama a esta función después de imprimir una página.

Ejemplo

Vea el ejemplo de CDC::StartDoc.

CDC::EndPath

Cierra un corchete de trazado y selecciona el trazado definido por el corchete en el contexto de dispositivo.

BOOL EndPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Ejemplo

Vea el ejemplo de CDC::BeginPath.

CDC::EnumObjects

Enumera los lápices y pinceles disponibles en un contexto de dispositivo.

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

Parámetros

nObjectType
Especifica el tipo de objeto. Puede tener los valores OBJ_BRUSH o OBJ_PEN.

lpfn
Es la dirección de instancia del procedimiento de la función de devolución de llamada proporcionada por la aplicación. Consulte más abajo la sección "Comentarios".

lpData
Apunta a los datos que proporciona la aplicación. Los datos se pasan a la función de devolución de llamada junto con la información del objeto.

Valor devuelto

Especifica el último valor devuelto por la función de devolución de llamada. Su significado está definido por el usuario.

Comentarios

Para cada objeto de un tipo determinado, se llama a la función de devolución de llamada que se pasa con la información de ese objeto. El sistema llama a la función de devolución de llamada hasta que no hay más objetos o la función de devolución de llamada devuelve 0.

Las nuevas características de Microsoft Visual C++ permiten usar una función ordinaria como función pasada a EnumObjects. La dirección que se pasa a EnumObjects es un puntero a una función exportada con EXPORT y con la convención de llamada Pascal. En las aplicaciones en modo de protección, no es necesario crear esta función con la función de Windows MakeProcInstance ni liberar la función después de usarla con la FreeProcInstance función de Windows.

Tampoco es necesario exportar el nombre de la función en una EXPORTS instrucción en el archivo de definición de módulo de la aplicación. En su lugar, puede usar el modificador de función EXPORT, como en

int CALLBACK EXPORT AFunction (LPSTR, LPSTR);

para que el compilador emita el registro de exportación adecuado para la exportación por nombre sin alias. Esto funciona para la mayoría de las necesidades. En algunos casos especiales, como la exportación de una función por ordinal o mediante la creación de un alias para la exportación, sigue siendo necesario usar una instrucción EXPORTS en un archivo de definición de módulo.

Para compilar programas de Microsoft Foundation, normalmente usará las /GA opciones del compilador y /GEs . La /Gw opción del compilador no se usa con las clases de Microsoft Foundation. (Si usa la función MakeProcInstancede Windows , deberá convertir explícitamente el puntero de función devuelto desde FARPROC al tipo necesario en esta API). Las interfaces de registro de devolución de llamada ahora son seguras para tipos (debe pasar un puntero de función que apunte al tipo correcto de función para la devolución de llamada específica).

Además, todas las funciones de devolución de llamada deben interceptar las excepciones de Microsoft Foundation antes de volver a Windows, ya que las excepciones no se pueden producir a través de los límites de devolución de llamada. Para obtener más información sobre las excepciones, consulte el artículo Excepciones.

Ejemplo

// 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

Esta función miembro está prácticamente obsoleta para la programación en Win32.

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

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

Parámetros

nEscape
Especifica la función de escape que se va a realizar.

Para obtener una lista completa de las funciones de escape, consulte Escape en Windows SDK.

nCount
Especifica el número de bytes de los datos a los que apunta lpszInData.

lpszInData
Apunta a la estructura de datos de entrada necesaria para este escape.

lpOutData
Apunta a la estructura que va a recibir la salida de este escape. El parámetro lpOutData es NULL si no se devuelven datos.

nInputSize
Especifica el número de bytes de los datos a los que apunta el parámetro lpszInputData.

lpszInputData
Apunta a la estructura de entrada necesaria para el escape especificado.

nOutputSize
Especifica el número de bytes de los datos a los que apunta el parámetro lpszOutputData.

lpszOutputData
Apunta a la estructura que recibe la salida de este escape. Este parámetro debe ser NULL si no se devuelve ningún dato.

Valor devuelto

Se devuelve un valor positivo si la función se realiza correctamente, excepto para el escape QUERYESCSUPPORT, que solo comprueba la implementación. Se devuelve cero si no se implementa el escape. Se devuelve un valor negativo si se ha producido un error. A continuación se muestran valores de error comunes:

  • SP_ERROR: error general.

  • SP_OUTOFDISK: no hay suficiente espacio en disco disponible actualmente para la cola y no habrá más espacio disponible.

  • SP_OUTOFMEMORY: no hay suficiente memoria disponible para la cola.

  • SP_USERABORT: el usuario finalizó el trabajo con el Administrador de impresión.

Comentarios

De los escapes de impresora originales, solo se admite QUERYESCSUPPORT para las aplicaciones Win32. Todos los demás escapes de impresora están obsoletos y solo se admiten por compatibilidad con aplicaciones de 16 bits.

Para la programación en Win32, CDC ahora proporciona seis funciones miembro que reemplazan sus escapes de impresora correspondientes:

Además, CDC::GetDeviceCaps admite índices Win32 que sustituyen a otros escapes de impresora. Para obtener más información, consulte el método GetDeviceCaps en Windows SDK.

Esta función miembro permite a las aplicaciones acceder a las instalaciones de un dispositivo determinado que no están directamente disponibles a través de GDI.

Use la primera versión si la aplicación usa valores de escape predefinidos. Use la segunda versión si la aplicación define valores de escape privados. Consulte ExtEscape en Windows SDK para obtener más información sobre la segunda versión.

CDC::ExcludeClipRect

Crea una zona de recorte que consta de la zona de recorte existente menos el rectángulo especificado.

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

int ExcludeClipRect(LPCRECT lpRect);

Parámetros

x1
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo.

y1
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo.

x2
Especifica la coordenada x lógica de la esquina inferior derecha del rectángulo.

y2
Especifica la coordenada y lógica de la esquina inferior derecha del rectángulo.

lpRect
Especifica el rectángulo. También puede ser un objeto CRect.

Valor devuelto

Especifica el tipo de la nueva zona de recorte. Puede ser cualquiera de los siguientes valores:

  • COMPLEXREGION: la región tiene bordes superpuestos.

  • ERROR: no se ha creado ninguna región.

  • NULLREGION La región está vacía.

  • SIMPLEREGION: la región no tiene bordes superpuestos.

Comentarios

El ancho del rectángulo, especificado por el valor absoluto de x2 - x1, no debe superar las 32 767 unidades. Este límite también se aplica al alto del rectángulo.

CDC::ExcludeUpdateRgn

Impide dibujar dentro de áreas no válidas de una ventana al excluir una región actualizada de la ventana de la zona de recorte asociada al objeto CDC.

int ExcludeUpdateRgn(CWnd* pWnd);

Parámetros

pWnd
Apunta al objeto de ventana cuya ventana se está actualizando.

Valor devuelto

El tipo de región excluida. Puede tener cualquiera de los valores siguientes:

  • COMPLEXREGION: la región tiene bordes superpuestos.

  • ERROR: no se ha creado ninguna región.

  • NULLREGION La región está vacía.

  • SIMPLEREGION: la región no tiene bordes superpuestos.

CDC::ExtFloodFill

Rellena un área de la superficie de visualización con el pincel actual.

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

Parámetros

x
Especifica la coordenada x lógica del punto donde comienza el relleno.

y
Especifica la coordenada y lógica del punto donde comienza el relleno.

crColor
Especifica el color del límite o del área que se va a rellenar. La interpretación de crColor depende del valor de nFillType.

nFillType
Especifica el tipo de relleno que se va a realizar. Debe tener uno de los valores siguientes:

  • FLOODFILLBORDER: el área de relleno está limitada por el color especificado por crColor. Este estilo es idéntico al relleno que realiza FloodFill.

  • FLOODFILLSURFACE: el área de relleno está definida por el color especificado por crColor. El relleno continúa hacia afuera en todas las direcciones, siempre y cuando se encuentre el color. Este estilo es útil para rellenar áreas con límites multicolor.

Valor devuelto

Distinto de cero si la función es correcta; De lo contrario, 0 si no se pudo completar el relleno, si el punto dado tiene el color de límite especificado por crColor (si FLOODFILLBORDER se solicitó), si el punto dado no tiene el color especificado por crColor (si FLOODFILLSURFACE se solicitó) o si el punto está fuera de la región de recorte.

Comentarios

Esta función miembro ofrece más flexibilidad que FloodFill porque se puede especificar un tipo de relleno en nFillType.

Si nFillType se establece en FLOODFILLBORDER, se supone que el área está completamente limitada por el color especificado por crColor. La función comienza en el punto especificado por x y y rellena en todas las direcciones hasta el límite de color.

Si nFillType se establece en FLOODFILLSURFACE, la función comienza en el punto especificado por x y y y continúa en todas las direcciones, rellenando todas las áreas adyacentes que contienen el color especificado por crColor.

Solo los contextos de dispositivo de memoria y los dispositivos que admiten la tecnología de visualización de trama admiten ExtFloodFill. Para obtener más información, consulte la función miembro GetDeviceCaps.

CDC::ExtTextOut

Llame a esta función miembro para escribir una cadena de caracteres dentro de una región rectangular mediante la fuente seleccionada actualmente.

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);

Parámetros

x
Especifica la coordenada x lógica de la celda de caracteres para el primer carácter de la cadena especificada.

y
Especifica la coordenada y lógica de la parte superior de la celda de caracteres para el primer carácter de la cadena especificada.

nOptions
Especifica el tipo de rectángulo. Este parámetro puede ser uno de los valores siguientes, ambos o ninguno:

  • ETO_CLIPPED: especifica que el texto se recorta en el rectángulo.

  • ETO_OPAQUE: especifica que el color de fondo actual rellena el rectángulo. (Puede establecer y consultar el color de fondo actual con las funciones miembro SetBkColor y GetBkColor).

lpRect
Apunta a una estructura RECT que determina las dimensiones del rectángulo. Este parámetro puede ser NULL. También puede pasar un objeto CRect para este parámetro.

lpszString
Apunta a la cadena de caracteres especificada que se va a dibujar. También puede pasar un objeto CString para este parámetro.

nCount
Especifica el número de caracteres de la cadena.

lpDxWidths
Apunta a una matriz de valores que indican la distancia entre los orígenes de celdas de caracteres adyacentes. Por ejemplo, las unidades lógicas lpDxWidths[i] separarán los orígenes de la celda de caracteres i y la celda de caracteres i + 1. Si lpDxWidths es NULL, ExtTextOut usa el espaciado predeterminado entre caracteres.

str
Objeto CString que contiene los caracteres especificados que se van a dibujar.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

La región rectangular puede ser opaca (rellenada con el color de fondo actual) y puede ser una zona de recorte.

Si nOptions es 0 y lpRect es NULL, la función escribe texto en el contexto del dispositivo sin usar una región rectangular. De forma predeterminada, la función no usa ni actualiza la posición actual. Si una aplicación necesita actualizar la posición actual cuando llama a ExtTextOut, la aplicación puede llamar a la función miembro CDC SetTextAlign con nFlags establecido en TA_UPDATECP. Cuando se establece esta marca, Windows pasa por alto los parámetros x e y en las llamadas posteriores a ExtTextOut y usa la posición actual en su lugar. Cuando una aplicación usa TA_UPDATECP para actualizar la posición actual, ExtTextOut establece la posición actual al final de la línea de texto anterior o en la posición especificada por el último elemento de la matriz a la que apunta lpDxWidths, lo que sea mayor.

CDC::FillPath

Cierra cualquier figura abierta del trazado actual y rellena el interior del trazado mediante el pincel actual y el modo de relleno de polígonos.

BOOL FillPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Una vez que se ha rellenado su interior, el trazado se descarta del contexto de dispositivo.

CDC::FillRect

Llame a esta función miembro para rellenar un rectángulo determinado mediante el pincel especificado.

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

Parámetros

lpRect
Apunta a una estructura RECT que contiene las coordenadas lógicas del rectángulo que se va a rellenar. También puede pasar un objeto CRect para este parámetro.

pBrush
Identifica el pincel que se ha usado para rellenar el rectángulo.

Comentarios

La función rellena el rectángulo completo, incluidos los bordes izquierdo y superior, pero no rellena los bordes derecho e inferior.

El pincel debe crearse mediante las funciones miembro de CBrush CreateHatchBrush, CreatePatternBrush y CreateSolidBrush, o recuperarse mediante la función de Windows GetStockObject.

Al rellenar el rectángulo especificado, FillRect no incluye los lados derecho e inferior del rectángulo. GDI rellena un rectángulo hasta, pero no incluye, la columna derecha y la fila inferior, independientemente del modo de asignación actual. FillRect compara los valores de los miembros top, bottom, left y right del rectángulo especificado. Si bottom es menor o igual que top, o si right es menor o igual que left, el rectángulo no se dibuja.

FillRect es similar a CDC::FillSolidRect. Aun así, FillRect toma un pincel y, por lo tanto, se puede usar para rellenar un rectángulo con un color sólido, un color interpolado, pinceles sombreados o un patrón. FillSolidRect usa solo colores sólidos (indicados por un parámetro COLORREF). FillRect normalmente es más lento que FillSolidRect.

CDC::FillRgn

Rellena la región especificada por pRgn con el pincel especificado por pBrush.

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

Parámetros

pRgn
Puntero a la región que se va a rellenar. Las coordenadas de la región dada se especifican en unidades lógicas.

pBrush
Identifica el pincel que se va a usar para rellenar la región.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El pincel debe crearse con las funciones miembro de CBrush CreateHatchBrush, CreatePatternBrush o CreateSolidBrush, o recuperarse mediante GetStockObject.

Ejemplo

Vea el ejemplo de CRgn::CreateRoundRectRgn.

CDC::FillSolidRect

Llame a esta función miembro para rellenar el rectángulo especificado con el color sólido especificado.

void FillSolidRect(
    LPCRECT lpRect,
    COLORREF clr);

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

Parámetros

lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un puntero a una estructura de datos RECT o a un objeto CRect para este parámetro.

clr: especifica el color que se va a usar para rellenar el rectángulo.

x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo.

y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo de destino.

cx
Especifica el ancho del rectángulo.

cy
Especifica el alto del rectángulo.

Comentarios

FillSolidRect es muy similar a CDC::FillRect. Aun así, FillSolidRect solo usa colores sólidos (indicados por el parámetro COLORREF), mientras que FillRect toma un pincel y, por lo tanto, se puede usar para rellenar un rectángulo con un color sólido, un color interpolado, pinceles sombreados o un patrón. FillSolidRect normalmente es más rápido que FillRect.

Nota:

Cuando se llama a FillSolidRect, el color de fondo (que se estableció anteriormente mediante SetBkColor) se establece en el color indicado por clr.

CDC::FlattenPath

Transforma las curvas del trazado seleccionado en el contexto de dispositivo actual y convierte cada curva en una secuencia de líneas.

BOOL FlattenPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

CDC::FloodFill

Rellena un área de la superficie de visualización con el pincel actual.

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

Parámetros

x
Especifica la coordenada x lógica del punto donde comienza el relleno.

y
Especifica la coordenada y lógica del punto donde comienza el relleno.

crColor
Especifica el color del límite.

Valor devuelto

Distinto de cero si la función es correcta; De lo contrario, se devuelve 0 si no se pudo completar el relleno, el punto dado tiene el color de límite especificado por crColoro el punto está fuera de la región de recorte.

Comentarios

Se supone que el área está limitada según lo especificado por crColor. La función FloodFill comienza en el punto especificado por x y y continúa en todas las direcciones hasta el límite de color.

Solo los contextos de dispositivo de memoria y los dispositivos que admiten la tecnología de visualización de trama admiten la función miembro FloodFill. Para obtener información sobre la funcionalidad RC_BITBLT, consulte la función miembro GetDeviceCaps.

La función ExtFloodFill proporciona una funcionalidad similar, pero mayor flexibilidad.

CDC::FrameRect

Dibuja un borde alrededor del rectángulo especificado por lpRect.

void FrameRect(
    LPCRECT lpRect,
    CBrush* pBrush);

Parámetros

lpRect
Apunta a una estructura RECT o un objeto CRect que contiene las coordenadas lógicas de la esquina superior izquierda e inferior derecha del rectángulo. También puede pasar un objeto CRect para este parámetro.

pBrush
Identifica el pincel que se va a usar para enmarcar el rectángulo.

Comentarios

La función usa el pincel especificado para dibujar el borde. El ancho y el alto del borde son siempre una unidad lógica.

Si la coordenada del bottom rectángulo es menor o igual que top, o si right es menor o igual que left, el rectángulo no se dibuja.

El borde dibujado por FrameRect está en la misma posición que un borde dibujado por la función miembro Rectangle con las mismas coordenadas (si Rectangle usa un lápiz que tiene de ancho una unidad lógica). El interior del rectángulo no se rellena mediante FrameRect.

CDC::FrameRgn

Dibuja un borde alrededor de la región especificada mediante el pincel pRgn especificado por pBrush.

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

Parámetros

pRgn
Apunta al objeto CRgn que identifica la región que se va a incluir en un borde. Las coordenadas de la región dada se especifican en unidades lógicas.

pBrush
Apunta al objeto CBrush que identifica el pincel que se va a usar para dibujar el borde.

nWidth
Especifica el ancho del borde en trazos de pincel verticales en unidades de dispositivo.

nHeight
Especifica el alto del borde en trazos de pincel horizontales en unidades de dispositivo.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Ejemplo

Vea el ejemplo de CRgn::CombineRgn.

CDC::FromHandle

Devuelve un puntero a un objeto CDC cuando se especifica un identificador de un contexto de dispositivo.

static CDC* PASCAL FromHandle(HDC hDC);

Parámetros

hDC
Contiene un identificador de un contexto de dispositivo de Windows.

Valor devuelto

El puntero puede ser temporal y no debe almacenarse más allá del uso inmediato.

Comentarios

Si un objeto CDC no está asociado al identificador, se creará y asociará un objeto CDC temporal.

Ejemplo

Vea el ejemplo de CPrintDialog::GetPrinterDC.

CDC::GetArcDirection

Devuelve la dirección del arco actual para el contexto de dispositivo.

int GetArcDirection() const;

Valor devuelto

Especifica la dirección del arco actual, si se ejecuta correctamente. A continuación se muestran los valores devueltos válidos:

  • AD_COUNTERCLOCKWISE: los arcos y los rectángulos se dibujan en sentido contrario a las agujas del reloj.

  • AD_CLOCKWISE Arcs: los arcos y los rectángulos se dibujan en el sentido de las agujas del reloj.

Si se produce un error, el valor devuelto es cero.

Comentarios

Las funciones de arco y rectángulo usan la dirección del arco.

CDC::GetAspectRatioFilter

Recupera la configuración del filtro de relación de aspecto actual.

CSize GetAspectRatioFilter() const;

Valor devuelto

Un objeto CSize que representa la relación de aspecto usada por el filtro de relación de aspecto actual.

Comentarios

La relación de aspecto es la relación que forman el ancho y el alto de píxeles de un dispositivo. La información sobre la relación de aspecto de un dispositivo se usa en la creación, selección y visualización de fuentes. Windows proporciona un filtro especial (el filtro de relación de aspecto) para seleccionar fuentes diseñadas para una relación de aspecto determinada a partir de todas las fuentes disponibles. El filtro usa la relación de aspecto especificada por la función miembro SetMapperFlags.

CDC::GetBkColor

Devuelve el color de fondo actual.

COLORREF GetBkColor() const;

Valor devuelto

Un valor de color RGB.

Comentarios

Si el modo de fondo es OPAQUE, el sistema usa el color de fondo para rellenar los huecos en las líneas con estilo, los huecos entre las líneas sombreadas en pinceles y el fondo en las celdas de caracteres. El sistema también usa el color de fondo al convertir mapas de bits entre contextos de dispositivo monocromáticos y de color.

CDC::GetBkMode

Devuelve el modo de fondo.

int GetBkMode() const;

Valor devuelto

El modo de fondo actual, que puede ser OPAQUE o TRANSPARENT.

Comentarios

El modo de fondo define si el sistema quita los colores de fondo existentes en la superficie de dibujo antes de dibujar texto, pinceles sombreados o cualquier estilo de lápiz que no sea una línea sólida.

CDC::GetBoundsRect

Devuelve el rectángulo delimitador acumulado actual para el contexto de dispositivo especificado.

UINT GetBoundsRect(
    LPRECT lpRectBounds,
    UINT flags);

Parámetros

lpRectBounds
Apunta a un búfer que recibirá el rectángulo delimitador actual. El rectángulo se devuelve en coordenadas lógicas.

flags
Especifica si el rectángulo delimitador se va a borrar después de que se devuelva. Este parámetro debe ser cero o establecerse en el valor siguiente:

  • DCB_RESET Obliga a borrar el rectángulo delimitador después de que se devuelva.

Valor devuelto

Especifica el estado actual del rectángulo delimitador si la función se realiza correctamente. Puede ser una combinación de los valores siguientes:

  • DCB_ACCUMULATE: se está produciendo acumulación del rectángulo delimitador.

  • DCB_RESET: el rectángulo delimitador está vacío.

  • DCB_SET El rectángulo delimitador no está vacío.

  • DCB_ENABLE: la acumulación delimitadora está activada.

  • DCB_DISABLE: la acumulación delimitadora está desactivada.

CDC::GetBrushOrg

Recupera el origen (en unidades de dispositivo) del pincel seleccionado actualmente para el contexto de dispositivo.

CPoint GetBrushOrg() const;

Valor devuelto

El origen actual del pincel (en unidades de dispositivo) como un objeto CPoint.

Comentarios

El origen inicial del pincel está en (0,0) del área cliente. El valor devuelto especifica este punto en unidades de dispositivo en relación con el origen de la ventana de escritorio.

CDC::GetCharacterPlacement

Recupera varios tipos de información sobre una cadena de caracteres.

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;

Parámetros

lpString
Puntero a la cadena de caracteres que se va a procesar.

nCount
Especifica la longitud de la cadena. Para la versión ansi, es un BYTE recuento y para la función Unicode es un WORD recuento. Para obtener más información, vea GetCharacterPlacement.

nMaxExtent
Especifica la extensión máxima (en unidades lógicas) con la que se procesa la cadena. Los caracteres que, en caso de procesarse, superarían esta extensión se omiten. Los cálculos de la ordenación necesaria o las matrices de glifos solo se aplican a los caracteres incluidos. Este parámetro solo se usa si el valor GCP_MAXEXTENT se especifica en el parámetro dwFlags. A medida que la función procesa la cadena de entrada, cada carácter y su extensión se agregan a la salida, la extensión y otras matrices solo si la extensión total aún no ha superado el máximo. Una vez que se haya alcanzado el límite, el procesamiento se detendrá.

lpResults
Puntero a una estructura GCP_Results que recibe los resultados de la función.

dwFlags
Especifica cómo procesar la cadena en las matrices necesarias. Este parámetro puede ser uno o varios de los valores enumerados en la sección dwFlags del tema GetCharacterPlacement.

str
Puntero a un objeto CString que se va a procesar.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es el ancho y el alto de la cadena en unidades lógicas.

Si la función no se realiza correctamente, el valor devuelto es cero.

Comentarios

Esta función miembro emula la funcionalidad de la función GetCharacterPlacement, tal y como se describe en Windows SDK.

CDC::GetCharABCWidths

Recupera los anchos de caracteres consecutivos de un intervalo especificado de la fuente TrueType actual.

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

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

Parámetros

nFirstChar
Especifica el primer carácter del intervalo de caracteres de la fuente actual para la que se devuelven los anchos de caracteres.

nLastChar
Especifica el último carácter del intervalo de caracteres de la fuente actual para la que se devuelven los anchos de caracteres.

lpabc
Apunta a una matriz de estructuras ABC que reciben los anchos de caracteres cuando se devuelve la función. Esta matriz debe contener al menos tantas estructuras ABC como caracteres haya en el intervalo especificado por los parámetros nFirstChar y nLastChar.

lpABCF
Apunta a un búfer proporcionado por la aplicación con una matriz de estructuras ABCFLOAT para recibir los anchos de caracteres cuando se devuelve la función. Los anchos que devuelve esta función están en el formato de punto flotante de IEEE.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Los anchos se devuelven en unidades lógicas. Esta función solo se realiza correctamente con fuentes TrueType.

El rasterizador TrueType proporciona espaciado entre caracteres "ABC" después de seleccionar un tamaño de punto específico. El espaciado "A" es la distancia que se agrega a la posición actual antes de colocar el glifo. El espaciado "B" es el ancho de la parte negra del glifo. El espaciado "C" se agrega a la posición actual para tener en cuenta el espacio en blanco a la derecha del glifo. El ancho avanzado total se obtiene al sumar A + B + C.

Cuando la función miembro GetCharABCWidths recupera anchos "A" o "C" negativos para un carácter, ese carácter incluye las partes entrantes o salientes.

Para convertir los anchos ABC en unidades de diseño de fuente, una aplicación debe crear una fuente cuyo alto (como se especifica en el miembro lfHeight de la estructura LOGFONT) sea igual al valor almacenado en el miembro ntmSizeEM de la estructura NEWTEXTMETRIC. (El valor del miembro ntmSizeEM se puede recuperar mediante una llamada a la función EnumFontFamilies de Windows).

Los anchos ABC del carácter predeterminado se usan para los caracteres que están fuera del intervalo de la fuente seleccionada actualmente.

Para recuperar los anchos de caracteres de fuentes que no son TrueType, las aplicaciones deben usar la función de Windows GetCharWidth.

CDC::GetCharABCWidthsI

Recupera los anchos, en unidades lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente TrueType actual.

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

Parámetros

giFirst
Especifica el primer índice de glifos del grupo de índices de glifos consecutivos de la fuente actual. Este parámetro solo se usa si el parámetro pgi es NULL.

cgi
Especifica el número de índices de glifos.

pgi
Puntero a una matriz que contiene índices de glifos. Si el valor es NULL, se usa en su lugar el parámetro giFirst. El parámetro cgi especifica el número de índices de glifos de esta matriz.

lpabc
Puntero a una matriz de estructuras ABC que reciben los anchos de caracteres. Esta matriz debe contener al menos tantas estructuras ABC como índices de glifos especifique el parámetro cgi.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función miembro emula la funcionalidad de la función GetCharABCWidthsI, tal y como se describe en Windows SDK.

CDC::GetCharWidth

Recupera los anchos de caracteres individuales de un grupo consecutivo de caracteres de la fuente actual mediante m_hAttribDC, el contexto de dispositivo de entrada.

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

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

Parámetros

nFirstChar
Especifica el primer carácter de un grupo consecutivo de caracteres en la fuente actual.

nLastChar
Especifica el último carácter de un grupo consecutivo de caracteres en la fuente actual.

lpBuffer
Apunta a un búfer que recibirá los valores de ancho de un grupo consecutivo de caracteres en la fuente actual.

lpFloatBuffer
Apunta a un búfer que recibirá los anchos de caracteres. Los anchos devueltos están en el formato de punto flotante de IEEE de 32 bits. (Los anchos se miden a lo largo de la línea base de los caracteres).

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Por ejemplo, si nFirstChar identifica la letra "a" y nLastChar identifica la letra "z", la función recupera los anchos de todos los caracteres en minúsculas.

La función almacena los valores en el búfer al que apunta lpBuffer. Este búfer debe ser lo suficientemente grande como para contener todos los anchos. Es decir, debe haber al menos 26 entradas en el ejemplo dado.

Si un carácter del grupo consecutivo de caracteres no existe en una fuente determinada, se le asignará el valor de ancho del carácter predeterminado.

CDC::GetCharWidthI

Recupera los anchos, en coordenadas lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente actual.

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

Parámetros

giFirst
Especifica el primer índice de glifos del grupo de índices de glifos consecutivos de la fuente actual. Este parámetro solo se usa si el parámetro pgi es NULL.

cgi
Especifica el número de índices de glifos.

pgi
Puntero a una matriz que contiene índices de glifos. Si el valor es NULL, se usa en su lugar el parámetro giFirst. El parámetro cgi especifica el número de índices de glifos de esta matriz.

lpBuffer
Puntero a un búfer que recibe los anchos.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función miembro emula la funcionalidad de la función GetCharWidthI, tal y como se describe en Windows SDK.

CDC::GetClipBox

Recupera las dimensiones del rectángulo delimitador más estrecho alrededor del límite de recorte actual.

virtual int GetClipBox(LPRECT lpRect) const;

Parámetros

lpRect
Apunta a la estructura RECT o el objeto CRect que va a recibir las dimensiones del rectángulo.

Valor devuelto

El tipo de la zona de recorte. Puede ser cualquiera de los siguientes valores:

  • COMPLEXREGION: la zona de recorte tiene bordes superpuestos.

  • ERROR El contexto del dispositivo no es válido.

  • NULLREGION: la zona de recorte está vacía.

  • SIMPLEREGION: la zona de recorte no tiene bordes superpuestos.

Comentarios

Las dimensiones se copian en el búfer al que apunta lpRect.

CDC::GetColorAdjustment

Recupera los valores de ajuste de color para el contexto de dispositivo.

BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;

Parámetros

lpColorAdjust
Apunta a una estructura de datos COLORADJUSTMENT para recibir los valores de ajuste de color.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

CDC::GetCurrentBitmap

Devuelve un puntero al objeto CBitmap seleccionado actualmente.

CBitmap* GetCurrentBitmap() const;

Valor devuelto

Un puntero a un objeto CBitmap si se realiza correctamente; de lo contrario, NULL.

Comentarios

Esta función miembro podría devolver objetos temporales.

CDC::GetCurrentBrush

Devuelve un puntero al objeto CBrush seleccionado actualmente.

CBrush* GetCurrentBrush() const;

Valor devuelto

Un puntero a un objeto CBrush si se realiza correctamente; de lo contrario, NULL.

Comentarios

Esta función miembro podría devolver objetos temporales.

CDC::GetCurrentFont

Devuelve un puntero al objeto CFont seleccionado actualmente.

CFont* GetCurrentFont() const;

Valor devuelto

Un puntero a un objeto CFont si se realiza correctamente; de lo contrario, NULL.

Comentarios

Esta función miembro podría devolver objetos temporales.

CDC::GetCurrentPalette

Devuelve un puntero al objeto CPalette seleccionado actualmente.

CPalette* GetCurrentPalette() const;

Valor devuelto

Un puntero a un objeto CPalette si se realiza correctamente; de lo contrario, NULL.

Comentarios

Esta función miembro podría devolver objetos temporales.

CDC::GetCurrentPen

Devuelve un puntero al objeto CPen seleccionado actualmente.

CPen* GetCurrentPen() const;

Valor devuelto

Un puntero a un objeto CPen si se realiza correctamente; de lo contrario, NULL.

Comentarios

Esta función miembro podría devolver objetos temporales.

CDC::GetCurrentPosition

Recupera la posición actual (en coordenadas lógicas).

CPoint GetCurrentPosition() const;

Valor devuelto

La posición actual como un objeto CPoint.

Comentarios

La posición actual se puede establecer con la función miembro MoveTo.

CDC::GetDCBrushColor

Recupera el color de pincel actual.

COLORREF GetDCBrushColor() const;

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es el valor COLORREF del color de pincel actual.

Si la función produce un error, el valor devuelto es CLR_INVALID.

Comentarios

Esta función miembro emula la funcionalidad de la función GetDCBrushColor, tal y como se describe en Windows SDK.

CDC::GetDCPenColor

Recupera el color del lápiz actual.

COLORREF GetDCPenColor() const;

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es el valor COLORREF del color de lápiz actual.

Si la función produce un error, el valor devuelto es CLR_INVALID.

Comentarios

Esta función miembro usa la función GetDCPenColor de Win32, como se describe en Windows SDK.

CDC::GetDeviceCaps

Recupera una amplia gama de información específica del dispositivo sobre el dispositivo de visualización.

int GetDeviceCaps(int nIndex) const;

Parámetros

nIndex
Especifica el tipo de información que se va a devolver. Para una lista de valores, consulte GetDeviceCaps en Windows SDK.

Valor devuelto

El valor de la funcionalidad solicitada si la función se realiza correctamente.

Ejemplo

Vea el ejemplo de CPrintDialog::GetDefaults.

CDC::GetFontData

Recupera información de métricas de fuente de un archivo de fuente escalable.

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

Parámetros

dwTable
Especifica el nombre de la tabla de métricas que se va a devolver. Este parámetro puede ser una de las tablas de métricas documentadas en la especificación de archivos de fuente TrueType publicada por Microsoft Corporation. Si este parámetro es 0, la información se recupera desde el principio del archivo de fuente.

dwOffset
Especifica el desplazamiento desde el principio de la tabla en la que se va a empezar a recuperar información. Si este parámetro es 0, la información se recupera desde el principio de la tabla especificada por el parámetro dwTable. Si este valor es mayor o igual que el tamaño de la tabla, GetFontData devuelve 0.

lpData
Apunta a un búfer que recibirá la información de fuente. Si este valor es NULL, la función devuelve el tamaño del búfer necesario para los datos de fuente especificados en el parámetro dwTable.

cbData
Especifica la longitud en bytes de la información que se recuperará. Si este parámetro es 0, GetFontData devuelve el tamaño de los datos especificados en el parámetro dwTable.

Valor devuelto

Especifica el número de bytes devueltos en el búfer al que apunta lpData si la función se realiza correctamente; en caso contrario, -1.

Comentarios

Para identificar qué información se va a recuperar, se especifica un desplazamiento en el archivo de fuente y la longitud de la información que se devolverá.

Una aplicación a veces puede usar la función miembro GetFontData para guardar una fuente TrueType con un documento. Para ello, la aplicación determina si la fuente se puede insertar, recupera todo el archivo de fuente y especifica 0 para los parámetros dwTable, dwOffset y cbData.

Las aplicaciones pueden determinar si una fuente se puede insertar. Para ello, comprueban el miembro otmfsType de la estructura OUTLINETEXTMETRIC. Si se establece el bit 1 de otmfsType , no se permite insertar para la fuente. Si el bit 1 está desactivado, la fuente se puede insertar. Si se establece el bit 2, la inserción es de solo lectura.

Si una aplicación intenta usar esta función para recuperar información de una fuente que no es TrueType, la función miembro GetFontData devuelve -1.

CDC::GetFontLanguageInfo

Devuelve información sobre la fuente seleccionada actualmente para el contexto de visualización especificado.

DWORD GetFontLanguageInfo() const;

Valor devuelto

El valor devuelto identifica las características de la fuente seleccionada actualmente. Para obtener una lista completa de valores posibles, consulte GetFontLanguageInfo.

Comentarios

Esta función miembro emula la funcionalidad de la función GetFontLanguageInfo, tal y como se describe en Windows SDK.

CDC::GetGlyphOutline

Recupera la curva de contorno o el mapa de bits de un carácter de contorno en la fuente actual.

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

Parámetros

nChar
Especifica el carácter para el que se va a devolver información.

nFormat
Especifica el formato en el que la función va a devolver información. Puede ser uno de los valores siguientes o 0:

Valor Significado
GGO_BITMAP Devuelve el mapa de bits del glifo. Cuando se devuelve la función, el búfer al que apunta lpBuffer contiene un mapa de bits de 1 bit por píxel cuyas filas comienzan en límites de doble palabra.
GGO_NATIVE Devuelve los puntos de datos de curva en el formato nativo del rasterizador mediante unidades de dispositivo. Cuando se especifica este valor, se omite cualquier transformación especificada en lpmat2.

Cuando el valor de nFormat es 0, la función rellena una GLYPHMETRICS estructura, pero no devuelve datos de esquema de glifo.

lpgm
Apunta a una estructura GLYPHMETRICS que describe la colocación del glifo en la celda de caracteres.

cbBuffer
Especifica el tamaño del búfer en el que la función copia información sobre el carácter de contorno. Si este valor es 0 y el parámetro nFormat es el valor GGO_BITMAP o GGO_NATIVE, la función devuelve el tamaño necesario del búfer.

lpBuffer
Apunta a un búfer en el que la función copia información sobre el carácter de contorno. Si nFormat especifica el valor GGO_NATIVE, la información se copia en forma de estructuras TTPOLYGONHEADER y TTPOLYCURVE. Si este valor es NULL y nFormat es el valor GGO_BITMAP o GGO_NATIVE, la función devuelve el tamaño necesario del búfer.

lpmat2
Apunta a una estructura MAT2 que contiene una matriz de transformación para el carácter. Este parámetro no puede ser NULL, incluso cuando se especifica el valor GGO_NATIVE para nFormat.

Valor devuelto

El tamaño en bytes del búfer necesario para la información recuperada si cbBuffer es 0 o lpBuffer es NULL. De lo contrario, es un valor positivo si la función se realiza correctamente o -1 si se produce un error.

Comentarios

Una aplicación puede girar los caracteres recuperados en formato de mapa de bits. Para ello, especifica una matriz de transformación de 2 por 2 en la estructura a la que apunta lpmat2.

El contorno de un glifo se devuelve como una serie de contornos. Cada contorno se define mediante una estructura TTPOLYGONHEADER seguida de tantas estructuras TTPOLYCURVE como sea necesario para describirla. Todos los puntos se devuelven como estructuras POINTFX y representan posiciones absolutas, no movimientos relativos. El punto de partida proporcionado por el miembro pfxStart de la estructura TTPOLYGONHEADER es el punto en el que comienza un contorno. Las estructuras TTPOLYCURVE siguientes pueden ser registros Polilínea o registros spline. Los registros Polilínea son una serie de puntos; las líneas dibujadas entre los puntos describen el contorno del carácter. Los registros spline representan las curvas cuadráticas que usa TrueType (es decir, B-splines cuadráticas).

CDC::GetGraphicsMode

Recupera el modo gráfico actual para el contexto de dispositivo especificado.

int GetGraphicsMode() const;

Valor devuelto

Devuelve el modo gráfico actual si se ejecuta correctamente. Para obtener una lista de los valores que este método puede devolver, consulte GetGraphicsMode.

Devuelve 0 en caso de error.

Para obtener información de errores extendida, realice una llamada a GetLastError.

Comentarios

Este método encapsula la función GDI de Windows GetGraphicsMode.

CDC::GetHalftoneBrush

Llame a esta función miembro para recuperar un pincel de semitonos.

static CBrush* PASCAL GetHalftoneBrush();

Valor devuelto

Un puntero a un objeto CBrush si se realiza correctamente; de lo contrario, NULL.

Comentarios

Un pincel de semitonos muestra píxeles que son alternativamente colores de primer plano y de fondo para crear un patrón interpolado. En el diagrama siguiente se muestra un ejemplo de un patrón dithered creado por un pincel de medio tono:

Diagrama que muestra cómo se compone un trazo de lápiz dithered.

En el diagrama se muestra cómo el color de fondo de negro y el color de primer plano de amarillo se combinan en un patrón alternando los píxeles negros y amarillos entre sí para crear un trazo de lápiz dithered.

CDC::GetKerningPairs

Recupera los pares de interletraje de caracteres para la fuente seleccionada actualmente en el contexto de dispositivo especificado.

int GetKerningPairs(
    int nPairs,
    LPKERNINGPAIR lpkrnpair) const;

Parámetros

nPairs
Especifica el número de estructuras KERNINGPAIR a las que apunta lpkrnpair. La función no copiará más pares de kerning de los especificados por nPairs.

lpkrnpair
Apunta a una matriz de estructuras KERNINGPAIR que reciben los pares de interletraje cuando se devuelve la función. Esta matriz debe contener al menos tantas estructuras como especifique nPairs. Si este parámetro es NULL, la función devuelve el número total de pares de interletraje para la fuente.

Valor devuelto

Especifica el número de pares de interletraje recuperados o el número total de pares de interletraje de la fuente, si la función se realiza correctamente. Se devuelve cero si se produce un error en la función o no hay pares de interletraje para la fuente.

CDC::GetLayout

Llame a esta función miembro para determinar el diseño del texto y los gráficos de un contexto de dispositivo, como una impresora o un metarchivo.

DWORD GetLayout() const;

Valor devuelto

Si se ejecuta correctamente, las marcas de diseño del contexto de dispositivo actual. En caso contrario, es GDI_ERROR. Para obtener información de error extendida, llame a GetLastError. Para ver una lista de las marcas de diseño, consulte CDC::SetLayout.

Comentarios

El diseño predeterminado es de izquierda a derecha.

CDC::GetMapMode

Recupera el modo de asignación actual.

int GetMapMode() const;

Valor devuelto

El modo de asignación.

Comentarios

Para obtener una descripción de los modos de asignación, consulte la función miembro SetMapMode.

Nota:

Si llama a SetLayout para cambiar el contexto de dispositivo a un diseño de derecha a izquierda, SetLayout cambia automáticamente el modo de asignación a MM_ISOTROPIC. Por consiguiente, cualquier llamada posterior a GetMapMode devolverá MM_ISOTROPIC.

CDC::GetMiterLimit

Devuelve el límite angular para el contexto de dispositivo.

float GetMiterLimit() const;

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El límite angular se usa al dibujar líneas geométricas que tienen uniones angulares.

CDC::GetNearestColor

Devuelve el color sólido que coincide mejor con un color lógico especificado.

COLORREF GetNearestColor(COLORREF crColor) const;

Parámetros

crColor
Especifica el color con el que se va a establecer la coincidencia.

Valor devuelto

Un valor de color RGB (rojo, verde, azul) que define el color sólido más cercano al valor crColor que el dispositivo puede representar.

Comentarios

El dispositivo especificado debe ser capaz de representar este color.

CDC::GetOutlineTextMetrics

Recupera información de métricas para fuentes TrueType.

UINT GetOutlineTextMetrics(
    UINT cbData,
    LPOUTLINETEXTMETRIC lpotm) const;

Parámetros

lpotm
Apunta a una matriz de estructuras OUTLINETEXTMETRIC. Si este parámetro es NULL, la función devuelve el tamaño del búfer necesario para los datos de métricas recuperados.

cbData
Especifica el tamaño en bytes del búfer al que se devuelve información.

lpotm
Apunta a una estructura OUTLINETEXTMETRIC. Si este parámetro es NULL, la función devuelve el tamaño del búfer necesario para la información de métricas recuperada.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

La estructura OUTLINETEXTMETRIC contiene la mayor parte de la información de métrica de fuente proporcionada con el formato TrueType, incluida una estructura TEXTMETRIC. Los cuatro últimos miembros de la estructura OUTLINETEXTMETRIC son punteros a cadenas. Las aplicaciones deben asignar espacio para estas cadenas, además del espacio necesario para los demás miembros. Dado que no hay ningún límite impuesto por el sistema al tamaño de las cadenas, el método más sencillo para asignar memoria es recuperar el tamaño necesario especificando NULL para lpotm en la primera llamada a la GetOutlineTextMetrics función.

CDC::GetOutputCharWidth

Usa el contexto de dispositivo de salida (m_hDC) y recupera los anchos de caracteres individuales de un grupo consecutivo de caracteres de la fuente actual.

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

Parámetros

nFirstChar
Especifica el primer carácter de un grupo consecutivo de caracteres en la fuente actual.

nLastChar
Especifica el último carácter de un grupo consecutivo de caracteres en la fuente actual.

lpBuffer
Apunta a un búfer que recibirá los valores de ancho de un grupo consecutivo de caracteres en la fuente actual.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Por ejemplo, si nFirstChar identifica la letra "a" y nLastChar identifica la letra "z", la función recupera los anchos de todos los caracteres en minúsculas.

La función almacena los valores en el búfer al que apunta lpBuffer. Este búfer debe ser lo suficientemente grande para contener todos los anchos; es decir, debe haber al menos 26 entradas en el ejemplo especificado.

Si un carácter del grupo consecutivo de caracteres no existe en una fuente determinada, se le asignará el valor de ancho del carácter predeterminado.

CDC::GetOutputTabbedTextExtent

Llame a esta función miembro para calcular el ancho y el alto de una cadena de caracteres mediante m_hDC, el contexto de dispositivo de salida.

CSize GetOutputTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetOutputTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

Parámetros

lpszString
Apunta a una cadena de caracteres que se va a medir. También puede pasar un objeto CString para este parámetro.

nCount
Especifica la longitud de la cadena a la que apunta lpszString.

nTabPositions
Especifica el número de posiciones de tabulación en la matriz a la que apunta lpnTabStopPositions.

lpnTabStopPositions
Apunta a una matriz de enteros que contienen las posiciones de tabulación en unidades lógicas. Las tabulaciones deben ordenarse en orden creciente; el valor x más pequeño debe ser el primer elemento de la matriz. No se permiten pestañas posteriores.

str
Objeto CString que contiene los caracteres especificados que se van a medir.

Valor devuelto

Las dimensiones de la cadena (en unidades lógicas) de un objeto CSize.

Comentarios

Si la cadena contiene uno o varios caracteres de tabulación, el ancho de la cadena se basa en las tabulaciones que especifica lpnTabStopPositions. La función usa la fuente seleccionada actualmente para calcular las dimensiones de la cadena.

La región de recorte actual no desplaza el ancho y el alto devueltos por la GetOutputTabbedTextExtent función.

Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, a kern los caracteres), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.

Si nTabPositions es 0 y lpnTabStopPositions es NULL, las tabulaciones se expanden ocho veces el ancho de carácter medio. Si nTabPositions es 1, las tabulaciones se separarán con la distancia especificada por el primer valor de la matriz a la que apunta lpnTabStopPositions. Si lpnTabStopPositions apunta a más de un valor, se establece una tabulación para cada valor de la matriz, hasta el número especificado por nTabPositions.

CDC::GetOutputTextExtent

Llame a esta función miembro para usar el contexto de dispositivo de salida (m_hDC) y calcular el ancho y el alto de una línea de texto con la fuente actual.

CSize GetOutputTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetOutputTextExtent(const CString& str) const;

Parámetros

lpszString
Apunta a una cadena de caracteres. También puede pasar un objeto CString para este parámetro.

nCount
Especifica la longitud de la cadena a la que apunta lpszString.

str
Objeto CString que contiene los caracteres especificados que se van a medir.

Valor devuelto

Las dimensiones de la cadena (en unidades lógicas) devuelta en un objeto CSize.

Comentarios

La región de recorte actual no afecta al ancho y alto devuelto por GetOutputTextExtent.

Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, llevan a cabo el kerning), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.

CDC::GetOutputTextMetrics

Recupera las métricas de la fuente actual mediante m_hDC, el contexto de dispositivo de salida.

BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;

Parámetros

lpMetrics
Apunta a la estructura TEXTMETRIC que recibe las métricas.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

CDC::GetPath

Recupera las coordenadas que definen los extremos de líneas y los puntos de control de curvas que se encuentran en el trazado seleccionado en el contexto de dispositivo.

int GetPath(
    LPPOINT lpPoints,
    LPBYTE lpTypes,
    int nCount) const;

Parámetros

lpPoints
Apunta a una matriz de estructuras de datos POINT u objetos CPoint donde se colocan los extremos de líneas y los puntos de control de curvas.

lpTypes
Apunta a una matriz de bytes donde se colocan los tipos de vértice. Los valores son uno de los siguientes:

  • PT_MOVETO: especifica que el punto correspondiente de lpPoints inicia una figura no contigua.

  • PT_LINETO: especifica que el punto anterior y el punto correspondiente de lpPoints son los extremos de una línea.

  • PT_BEZIERTO: especifica que el punto correspondiente de lpPoints es un punto de control o un extremo de una curva Bézier.

PT_BEZIERTO: los tipos siempre se producen en conjuntos de tres. El punto del trazado inmediatamente anterior a ellos define el punto inicial de la curva Bézier. Los dos primeros puntos PT_BEZIERTO son los puntos de control y el tercer punto PT_BEZIERTO es el punto final (si está codificado de forma rígida).

Un tipo PT_LINETO o PT_BEZIERTO puede combinarse con la marca siguiente (mediante el operador bit a bit OR) para indicar que el punto correspondiente es el último punto de una figura y que la figura debe cerrarse:

  • PT_CLOSEFIGURE: especifica que la figura se cierra automáticamente después de dibujar la línea o curva correspondientes. Para cerrar la figura, se dibuja una línea desde el extremo de la línea o la curva hasta el punto correspondiente del último PT_MOVETO.

nCount
Especifica el número total de estructuras de datos POINT que se pueden colocar en la matriz lpPoints. Este valor debe ser el mismo que el número de bytes que pueden colocarse en la matriz lpTypes.

Valor devuelto

Si el parámetro nCount es distinto de cero, el número de puntos enumerados. Si nCount es 0, el número total de puntos del trazado (y GetPath no escribe nada en los búferes). Si nCount no es cero y es menor que el número de puntos del trazado, el valor devuelto es -1.

Comentarios

El contexto de dispositivo debe contener un trazado cerrado. Los puntos del trazado se devuelven en coordenadas lógicas. Los puntos se almacenan en el trazado en coordenadas del dispositivo, por lo que GetPath cambia los puntos de coordenadas del dispositivo a las coordenadas lógicas mediante el uso del valor inverso de la transformación actual. Se puede llamar a la función miembro FlattenPath antes de GetPath, para convertir todas las curvas del trazado en segmentos de línea.

Ejemplo

Vea el ejemplo de CDC::BeginPath.

CDC::GetPixel

Recupera el valor de color RGB del píxel en el punto especificado por x e *y*.

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

Parámetros

x
Especifica la coordenada x lógica del punto que se va a examinar.

y
Especifica la coordenada y lógica del punto que se va a examinar.

point
Especifica las coordenadas x e y lógicas del punto que se va a examinar.

Valor devuelto

Para cualquiera de las versiones de la función, un valor de color RGB para el color del punto especificado. Es -1 si las coordenadas no especifican un punto en la región de recorte.

Comentarios

El punto debe estar en la zona de recorte. Si el punto no está en la región de recorte, la función no tiene ningún efecto y devuelve -1.

No todos los dispositivos admiten la función GetPixel. Para obtener más información, consulte la funcionalidad de trama RC_BITBLT en la función miembro GetDeviceCaps.

La función miembro GetPixel tiene dos formas. La primera toma dos valores de coordenadas; el segundo toma una estructura POINT o un objeto CPoint.

CDC::GetPolyFillMode

Recupera el modo actual de relleno de polígonos.

int GetPolyFillMode() const;

Valor devuelto

El modo de relleno de polígono actual (ALTERNATE o WINDING), si la función se realiza correctamente.

Comentarios

Consulte la función miembro SetPolyFillMode para obtener una descripción de los modos de relleno de polígono.

CDC::GetROP2

Recupera el modo de dibujo actual.

int GetROP2() const;

Valor devuelto

El modo de dibujo. Para obtener una lista de los valores del modo de dibujo, consulte la función miembro SetROP2.

Comentarios

El modo de dibujo especifica la forma en que los colores del lápiz y el interior de los objetos rellenados se combinan con el color que ya está en la superficie de visualización.

CDC::GetSafeHdc

Llame a esta función miembro para obtener m_hDC, el contexto de dispositivo de salida.

HDC GetSafeHdc() const;

Valor devuelto

Un identificador del contexto de dispositivo.

Comentarios

Esta función miembro también funciona con punteros nulos.

CDC::GetStretchBltMode

Recupera el modo de extensión del mapa de bits actual.

int GetStretchBltMode() const;

Valor devuelto

El valor devuelto especifica el modo actual de extensión de mapa de bits (STRETCH_ANDSCANS, STRETCH_DELETESCANS o STRETCH_ORSCANS) si la función se realiza correctamente.

Comentarios

El modo de extensión de mapa de bits define la manera en que la información se quita de los mapas de bits extendidos o comprimidos por la función miembro StretchBlt.

Los modos STRETCH_ANDSCANS y STRETCH_ORSCANS se usan normalmente para conservar píxeles de primer plano en mapas de bits monocromáticos. El modo STRETCH_DELETESCANS se usa normalmente para conservar el color en los mapas de bits de color.

CDC::GetTabbedTextExtent

Llame a esta función miembro para calcular el ancho y el alto de una cadena de caracteres mediante m_hAttribDC, el contexto de dispositivo de atributo.

CSize GetTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

Parámetros

lpszString
Apunta a una cadena de caracteres. También puede pasar un objeto CString para este parámetro.

nCount
Especifica la longitud de la cadena a la que apunta lpszString.

nTabPositions
Especifica el número de posiciones de tabulación en la matriz a la que apunta lpnTabStopPositions.

lpnTabStopPositions
Apunta a una matriz de enteros que contienen las posiciones de tabulación en unidades lógicas. Las tabulaciones deben ordenarse en orden creciente; el valor x más pequeño debe ser el primer elemento de la matriz. No se permiten pestañas posteriores.

str
Objeto CString que contiene los caracteres especificados que se van a dibujar.

Valor devuelto

Las dimensiones de la cadena (en unidades lógicas) de un objeto CSize.

Comentarios

Si la cadena contiene uno o varios caracteres de tabulación, el ancho de la cadena se basa en las tabulaciones que especifica lpnTabStopPositions. La función usa la fuente seleccionada actualmente para calcular las dimensiones de la cadena.

La región de recorte actual no desplaza el ancho y el alto devueltos por la GetTabbedTextExtent función.

Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, a kern los caracteres), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.

Si nTabPositions es 0 y lpnTabStopPositions es NULL, las tabulaciones se expanden ocho veces el ancho de carácter medio. Si nTabPositions es 1, las tabulaciones se separarán con la distancia especificada por el primer valor de la matriz a la que apunta lpnTabStopPositions. Si lpnTabStopPositions apunta a más de un valor, se establece una tabulación para cada valor de la matriz, hasta el número especificado por nTabPositions.

CDC::GetTextAlign

Recupera el estado de las marcas de alineación del texto para el contexto de dispositivo.

UINT GetTextAlign() const;

Valor devuelto

El estado de las marcas de alineación del texto. El valor devuelto es uno o varios de los valores siguientes:

  • TA_BASELINE: especifica la alineación del eje x y la línea base de la fuente elegida dentro del rectángulo delimitador.

  • TA_BOTTOM: especifica la alineación del eje x y la parte inferior del rectángulo delimitador.

  • TA_CENTER: especifica la alineación del eje y y el centro del rectángulo delimitador.

  • TA_LEFT: especifica la alineación del eje y y el lado izquierdo del rectángulo delimitador.

  • TA_NOUPDATECP Especifica que la posición actual no se actualiza.

  • TA_RIGHT: especifica la alineación del eje y y el lado derecho del rectángulo delimitador.

  • TA_TOP: especifica la alineación del eje x y la parte superior del rectángulo delimitador.

  • TA_UPDATECP: especifica que la posición actual se actualiza.

Comentarios

Las marcas de alineación del texto determinan la forma en que las funciones miembro TextOut y ExtTextOut alinean una cadena de texto en relación con el punto inicial de la cadena. Las marcas de alineación de texto no son necesariamente marcas de un solo bit y pueden ser iguales a 0. Para probar si se establece una marca, una aplicación debe seguir estos pasos:

  1. Aplique el operador OR bit a bit (|) a la marca y sus marcas relacionadas, agrupadas como se indica a continuación:

    • TA_LEFT, TA_CENTER y TA_RIGHT

    • TA_BASELINE, TA_BOTTOM y TA_TOP

    • TA_NOUPDATECP y TA_UPDATECP

  2. Aplique el operador AND bit a bit (&) de C++ al resultado y el valor devuelto de GetTextAlign.

  3. Pruebe la igualdad de este resultado y la marca.

CDC::GetTextCharacterExtra

Recupera la configuración actual de la cantidad de espaciado entre caracteres.

int GetTextCharacterExtra() const;

Valor devuelto

La cantidad de espaciado entre caracteres.

Comentarios

GDI agrega este espaciado a cada carácter, incluidos los caracteres de salto, cuando escribe una línea de texto en el contexto de dispositivo.

El valor predeterminado de la cantidad de espaciado entre caracteres es 0.

CDC::GetTextColor

Recupera el color actual del texto.

COLORREF GetTextColor() const;

Valor devuelto

El color del texto actual como un valor de color RGB.

Comentarios

El color del texto es el color de primer plano de los caracteres dibujados mediante las funciones miembro de salida de texto de GDI TextOut, ExtTextOut y TabbedTextOut.

CDC::GetTextExtent

Llame a esta función miembro para calcular el ancho y el alto de una línea de texto mediante la fuente actual para determinar las dimensiones.

CSize GetTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetTextExtent(const CString& str) const;

Parámetros

lpszString
Apunta a una cadena de caracteres. También puede pasar un objeto CString para este parámetro.

nCount
Especifica el número de caracteres de la cadena.

str
Objeto CString que contiene los caracteres especificados.

Valor devuelto

Las dimensiones de la cadena (en unidades lógicas) de un objeto CSize.

Comentarios

La información se recupera de m_hAttribDC, el contexto de dispositivo de atributo.

De forma predeterminada, GetTextExtent da por supuesto que el texto para el que recupera la dimensión se establece a lo largo de una línea horizontal (es decir, el escape es 0). Si crea una fuente que especifica un escape distinto de cero, debe convertir el ángulo del texto explícitamente para obtener las dimensiones de la cadena.

La región de recorte actual no afecta al ancho y alto devuelto por GetTextExtent.

Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, llevan a cabo el kerning), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.

CDC::GetTextExtentExPointI

Recupera el número de caracteres de una cadena especificada que cabrá en un espacio determinado y rellena una matriz con la extensión de texto para cada uno de esos caracteres.

BOOL GetTextExtentExPointI(
    LPWORD pgiIn,
    int cgi,
    int nMaxExtent,
    LPINT lpnFit,
    LPINT alpDx,
    LPSIZE lpSize) const;

Parámetros

pgiIn
Puntero a una matriz de índices de glifo para la que se van a recuperar extensiones.

cgi
Especifica el número de glifos de la matriz a la que apunta pgiIn.

nMaxExtent
Especifica el ancho máximo permitido, en unidades lógicas, de la cadena con formato.

lpnFit
Puntero a un entero que recibe un recuento del número máximo de caracteres que cabrán en el espacio especificado por nMaxExtent. Cuando lpnFit es NULL, nMaxExtent se omite.

alpDx
Puntero a una matriz de enteros que recibe extensiones de glifos parciales. Cada elemento de la matriz proporciona la distancia, en unidades lógicas, entre el principio de la matriz de índices de glifo y uno de los glifos que cabe en el espacio especificado por nMaxExtent. Aunque esta matriz debe tener al menos tantos elementos como índices de glifo especificados en cgi, la función rellena la matriz con extensiones solo para tantos índices de glifo como se especifican en lpnFit. Si lpnDx es NULL, la función no calcula anchos de cadena parciales.

lpSize
Puntero a una estructura SIZE que recibe las dimensiones de la matriz de índices de glifo en unidades lógicas. Este valor no puede ser NULL.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función miembro emula la funcionalidad de la función GetTextExtentExPointI, tal y como se describe en Windows SDK.

CDC::GetTextExtentPointI

Recupera el ancho y el alto de la matriz especificada de índices de glifo.

BOOL GetTextExtentPointI(
    LPWORD pgiIn,
    int cgi,
    LPSIZE lpSize) const;

Parámetros

pgiIn
Puntero a una matriz de índices de glifo para la que se van a recuperar extensiones.

cgi
Especifica el número de glifos de la matriz a la que apunta pgiIn.

lpSize
Puntero a una estructura SIZE que recibe las dimensiones de la matriz de índices de glifo en unidades lógicas. Este valor no puede ser NULL.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función miembro emula la funcionalidad de la función GetTextExtentPointI, tal y como se describe en Windows SDK.

CDC::GetTextFace

Llame a esta función miembro para copiar el nombre del tipo de letra de la fuente actual en un búfer.

int GetTextFace(
    int nCount,
    LPTSTR lpszFacename) const;

int GetTextFace(CString& rString) const;

Parámetros

nCount
Especifica el tamaño del búfer (en bytes). Si el nombre del tipo de letra es más largo que el número de bytes especificado por este parámetro, el nombre se trunca.

lpszFacename
Apunta al búfer para el nombre del tipo de letra.

rString
Referencia a un objeto CString.

Valor devuelto

El número de bytes copiados en el búfer, sin incluir el carácter nulo de terminación. Es 0 si se produce un error.

Comentarios

El nombre del tipo de letra se copia como una cadena terminada en null.

CDC::GetTextMetrics

Recupera las métricas de la fuente actual que usa el contexto de dispositivo de atributo.

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;

Parámetros

lpMetrics
Apunta a la estructura TEXTMETRIC que recibe las métricas.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

CDC::GetViewportExt

Recupera las extensiones x e y del área de visualización del contexto de dispositivo.

CSize GetViewportExt() const;

Valor devuelto

Las extensiones x e y (en unidades de dispositivo) como un objeto CSize.

CDC::GetViewportOrg

Recupera las coordenadas x e y del origen del área de visualización asociada al contexto de dispositivo.

CPoint GetViewportOrg() const;

Valor devuelto

El origen del área de visualización (en coordenadas del dispositivo) como un objeto CPoint.

CDC::GetWindow

Devuelve la ventana asociada al contexto de dispositivo de visualización.

CWnd* GetWindow() const;

Valor devuelto

Puntero a un objeto CWnd si se lleva a cabo correctamente; de lo contrario, NULL.

Comentarios

Esta es una función avanzada. Por ejemplo, esta función miembro podría no devolver la ventana de visualización al imprimir o en vista previa de impresión. Siempre devuelve la ventana asociada a la salida. Las funciones de salida que usan el contexto de dispositivo determinado dibujan en esta ventana.

CDC::GetWindowExt

Recupera las extensiones x e y de la ventana asociada al contexto de dispositivo.

CSize GetWindowExt() const;

Valor devuelto

Las extensiones x e y (en unidades lógicas) como un objeto CSize.

CDC::GetWindowOrg

Recupera las coordenadas x e y del origen de la ventana asociada al contexto de dispositivo.

CPoint GetWindowOrg() const;

Valor devuelto

El origen de la ventana (en coordenadas lógicas) como un objeto CPoint.

CDC::GetWorldTransform

Recupera la transformación actual del espacio global al espacio de página.

BOOL GetWorldTransform(XFORM& rXform) const;

Parámetros

rXform
Referencia a una estructura XFORM que recibe la transformación actual del espacio global al espacio de página.

Valor devuelto

Devuelve un valor distinto de cero si se ejecuta correctamente.

Devuelve 0 en caso de error.

Para obtener información de errores extendida, realice una llamada a GetLastError.

Comentarios

Este método encapsula la función GDI de Windows GetWorldTransform.

CDC::GradientFill

Llame a esta función miembro para rellenar estructuras de rectángulo y triángulo con un color que se atenúa suavemente de un lado a otro.

BOOL GradientFill(
    TRIVERTEX* pVertices,
    ULONG nVertices,
    void* pMesh,
    ULONG nMeshElements,
    DWORD dwMode);

Parámetros

pVertices
Puntero a una matriz de estructuras TRIVERTEX que definen un vértice de triángulo.

nVertices
Número de vértices.

pMesh
Matriz de estructuras GRADIENT_TRIANGLE en modo de triángulo o matriz de estructuras GRADIENT_RECT en modo de rectángulo.

nMeshElements
Número de elementos (triángulos o rectángulos) de pMesh.

dwMode
Especifica el modo de relleno degradado. Para ver una lista de valores posibles, consulte GradientFill en Windows SDK.

Valor devuelto

TRUE si es correcto; de lo contrario, FALSE.

Comentarios

Para más información, consulte GradientFill en Windows SDK.

CDC::GrayString

Dibuja texto atenuado (gris) en la ubicación especificada, para lo que escribe el texto en un mapa de bits de memoria, atenúa el mapa de bits y copia el mapa de bits en la visualización.

virtual BOOL GrayString(
    CBrush* pBrush,
    BOOL (CALLBACK* lpfnOutput)(
    HDC,
    LPARAM,
    int),
    LPARAM lpData,
    int nCount,
    int x,
    int y,
    int nWidth,
    int nHeight);

Parámetros

pBrush
Identifica el pincel que se va a usar para atenuar.

lpfnOutput
Especifica la dirección de la instancia del procedimiento de la función de devolución de llamada proporcionada por la aplicación que dibujará la cadena. Para obtener más información, consulte la descripción de la función de devolución de llamada de Windows.OutputFunc Si este parámetro es NULL, el sistema usa la función TextOut de Windows para dibujar la cadena y se supone que lpData es un puntero largo a la cadena de caracteres que se va a generar.

lpData
Especifica un puntero lejano a los datos que se van a pasar a la función de salida. Si lpfnOutput es NULL, lpData debe ser un puntero largo a la cadena que se va a generar.

nCount
Especifica el número de caracteres que se van a generar. Si este parámetro es 0, GrayString calcula la longitud de la cadena (suponiendo que lpData es un puntero a la cadena). Si nCount es 1 y la función a la que apunta lpfnOutput devuelve 0, la imagen se muestra, pero no está atenuada.

x
Especifica la coordenada x lógica de la posición inicial del rectángulo que incluye la cadena.

y
Especifica la coordenada y lógica de la posición inicial del rectángulo que incluye la cadena.

nWidth
Especifica el ancho (en unidades lógicas) del rectángulo que incluye la cadena. Si nWidth es 0, GrayString calcula el ancho del área, suponiendo que lpData es un puntero a la cadena.

nHeight
Especifica el alto (en unidades lógicas) del rectángulo que incluye la cadena. Si nHeight es 0, GrayString calcula el alto del área, suponiendo que lpData es un puntero a la cadena.

Valor devuelto

Distinto de cero si se dibuja la cadena, o 0 si la función TextOut o la función de salida proporcionada por la aplicación devolvieron 0 o si no había memoria suficiente para crear un mapa de bits de memoria para atenuar.

Comentarios

La función atenúa el texto independientemente del pincel y el fondo seleccionados. La función miembro GrayString usa la fuente seleccionada actualmente. Debe seleccionarse el modo de asignación MM_TEXT antes de usar esta función.

Una aplicación puede dibujar cadenas atenuadas en dispositivos que admitan un color gris sólido sin llamar a la función miembro GrayString. El color del sistema COLOR_GRAYTEXT es el color del sistema gris sólido que se usa para dibujar texto deshabilitado. La aplicación puede llamar a la función de Windows GetSysColor para recuperar el valor de color de COLOR_GRAYTEXT. Si el color es distinto de 0 (negro), la aplicación puede llamar a la SetTextColor función miembro para establecer el color de texto en el valor de color y, a continuación, dibujar la cadena directamente. Si el color recuperado es negro, la aplicación debe llamar a GrayString para atenuar el texto.

Si lpfnOutput es NULL, GDI usa la función de Windows TextOut y se supone que lpData es un puntero lejano al carácter que se va a generar. Si la función miembro TextOut no puede controlar los caracteres que se van a generar (por ejemplo, la cadena se almacena como un mapa de bits), la aplicación debe proporcionar su propia función de salida.

Todas las funciones de devolución de llamada deben interceptar las excepciones de Microsoft Foundation antes de volver a Windows, ya que no se pueden producir excepciones a través de los límites de devolución de llamada. Para obtener más información sobre las excepciones, consulte el artículo Excepciones.

La función de devolución de llamada que se pasa a GrayString debe usar la convención de llamada __stdcall y debe exportarse con __declspec.

Cuando el marco está en modo de vista previa, una llamada a la GrayString función miembro se traduce a una TextOut llamada y no se llama a la función de devolución de llamada.

CDC::HIMETRICtoDP

Use esta función al convertir tamaños HIMETRIC de OLE a píxeles.

void HIMETRICtoDP(LPSIZE lpSize) const;

Parámetros

lpSize
Apunta a una estructura SIZE o un objeto CSize.

Comentarios

Si el modo de asignación del objeto de contexto del dispositivo es MM_LOENGLISH, MM_HIENGLISH, MM_LOMETRIC o MM_HIMETRIC, la conversión se basa en el número de píxeles de la pulgada física. Si el modo de asignación es uno de los otros modos no restringidos (por ejemplo, MM_TEXT), la conversión se basa en el número de píxeles de la pulgada lógica.

CDC::HIMETRICtoLP

Llame a esta función para convertir unidades HIMETRIC en unidades lógicas.

void HIMETRICtoLP(LPSIZE lpSize) const;

Parámetros

lpSize
Apunta a una estructura SIZE o un objeto CSize.

Comentarios

Use esta función cuando obtenga tamaños HIMETRIC de OLE y quiera convertirlos al modo de asignación natural de la aplicación.

Para llevar a cabo la conversión, primero se convierten las unidades HIMETRIC en píxeles y, luego, estas unidades se convierten en unidades lógicas mediante las unidades de asignación actuales del contexto de dispositivo. Tenga en cuenta que las extensiones de la ventana y del área de visualización del dispositivo afectarán al resultado.

CDC::IntersectClipRect

Crea una zona de recorte al formar la intersección de la región actual y el rectángulo especificado por x1, y1, x2 y y2.

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

int IntersectClipRect(LPCRECT lpRect);

Parámetros

x1
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo.

y1
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo.

x2
Especifica la coordenada x lógica de la esquina inferior derecha del rectángulo.

y2
Especifica la coordenada y lógica de la esquina inferior derecha del rectángulo.

lpRect
Especifica el rectángulo. Puede pasar un objeto CRect o un puntero a una estructura RECT para este parámetro.

Valor devuelto

El tipo de la nueva zona de recorte. Puede tener cualquiera de los valores siguientes:

  • COMPLEXREGION: la nueva zona de recorte tiene bordes superpuestos.

  • ERROR El contexto del dispositivo no es válido.

  • NULLREGION: la nueva zona de recorte está vacía.

  • SIMPLEREGION: la nueva zona de recorte no tiene bordes superpuestos.

Comentarios

GDI recorta todos los resultados posteriores para que quepan dentro del nuevo límite. El ancho y el alto no deben superar 32 767.

CDC::InvertRect

Invierte el contenido del rectángulo especificado.

void InvertRect(LPCRECT lpRect);

Parámetros

lpRect
Apunta a un objeto RECT que contiene las coordenadas lógicas del rectángulo que se va a invertir. También puede pasar un objeto CRect para este parámetro.

Comentarios

La inversión es una operación NOT lógica y voltea los bits de cada píxel. En visualizaciones monocromáticas, la función hace que los píxeles blancos sean negros y los negros, blancos. En visualizaciones de color, la inversión depende de cómo se generan los colores de la pantalla. Al llamar a InvertRect dos veces con el mismo rectángulo, se restaura la visualización a sus colores anteriores.

Si el rectángulo está vacío, no se dibuja nada.

Ejemplo

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

Invierte los colores de la región especificada por pRgn.

BOOL InvertRgn(CRgn* pRgn);

Parámetros

pRgn
Identifica la región que se va a invertir. Las coordenadas de la región se especifican en unidades lógicas.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

En visualizaciones monocromáticas, la función hace que los píxeles blancos sean negros y los negros, blancos. En visualizaciones de color, la inversión depende de cómo se generan los colores de la pantalla.

CDC::IsPrinting

Determina si el contexto de dispositivo se usa para imprimir.

BOOL IsPrinting() const;

Valor devuelto

Distinto de cero si el objeto CDC es un contexto de dispositivo de impresora; en caso contrario, 0.

CDC::LineTo

Dibuja una línea de la posición actual hasta el punto especificado por x y y (o point), pero sin incluirlo.

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

Parámetros

x
Especifica la coordenada x lógica del extremo de la línea.

y
Especifica la coordenada y lógica del extremo de la línea.

point
Especifica el extremo de la línea. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Es distinto de cero si se dibuja la línea; de lo contrario, es 0.

Comentarios

La línea se dibuja con el lápiz seleccionado. La posición actual se establece en x, y o point.

Ejemplo

Vea el ejemplo de CRect::CenterPoint.

CDC::LPtoDP

Convierte las unidades lógicas en unidades de dispositivo.

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

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

Parámetros

lpPoints
Apunta a una matriz de puntos. Cada punto de la matriz es una estructura POINT o un objeto CPoint.

nCount
Número de puntos de la matriz.

lpRect
Apunta a una estructura RECT o un objeto CRect. Este parámetro se usa para el caso común de asignar un rectángulo de unidades lógicas a unidades de dispositivo.

lpSize
Apunta a una estructura SIZE o un objeto CSize.

Comentarios

La función asigna las coordenadas de cada punto, o dimensión de un tamaño, del sistema de coordenadas lógicas de GDI al sistema de coordenadas del dispositivo. La conversión depende del modo de asignación actual y de la configuración de los orígenes y extensiones de la ventana y el área de visualización del dispositivo.

Las coordenadas x e y de los puntos son enteros con signo de 2 bytes en el intervalo de -32 768 a 32 767. En los casos en los que el modo de asignación daría lugar a valores superiores a estos límites, el sistema establece los valores en -32 768 y 32 767, respectivamente.

CDC::LPtoHIMETRIC

Llame a esta función para convertir unidades lógicas en unidades HIMETRIC.

void LPtoHIMETRIC(LPSIZE lpSize) const;

Parámetros

lpSize
Apunta a una estructura SIZE o un objeto CSize.

Comentarios

Use esta función cuando asigne tamaños HIMETRIC a OLE y realice una conversión desde el modo de asignación natural de la aplicación. Las extensiones de la ventana y la ventanilla del dispositivo afectarán al resultado.

Para llevar a cabo la conversión, primero se convierten las unidades lógicas en píxeles mediante las unidades de asignación actuales del contexto de dispositivo y, luego, estas unidades se convierten en unidades HIMETRIC.

CDC::m_hAttribDC

Contexto de dispositivo de atributo para este objeto CDC.

HDC m_hAttribDC;

Comentarios

De forma predeterminada, este contexto de dispositivo es igual a m_hDC. En general, las llamadas a CDC de GDI que solicitan información del contexto de dispositivo se dirigen a m_hAttribDC. Consulte la descripción de la clase CDC para obtener más información sobre el uso de estos dos contextos de dispositivo.

CDC::m_hDC

Contexto de dispositivo de salida para este objeto CDC.

HDC m_hDC;

Comentarios

De forma predeterminada, m_hDC es igual a m_hAttribDC, el otro contexto de dispositivo encapsulado por CDC. En general, las llamadas a CDC de GDI que crean la salida van al contexto de dispositivo m_hDC. Puede inicializar m_hDC y m_hAttribDC para apuntar a dispositivos diferentes. Consulte la descripción de la clase CDC para obtener más información sobre el uso de estos dos contextos de dispositivo.

CDC::MaskBlt

Combina los datos de color de los mapas de bits de origen y destino mediante la operación de máscara y trama especificadas.

BOOL MaskBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    CBitmap& maskBitmap,
    int xMask,
    int yMask,
    DWORD dwRop);

Parámetros

x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo de destino.

y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo de destino.

nWidth
Especifica el ancho en unidades lógicas del rectángulo de destino y del mapa de bits de origen.

nHeight
Especifica el alto en unidades lógicas del rectángulo de destino y del mapa de bits de origen.

pSrcDC
Identifica el contexto de dispositivo del que se va a copiar el mapa de bits. Debe ser cero si el dwRop parámetro especifica una operación de trama que no incluye un origen.

xSrc
Especifica la coordenada x lógica de la esquina superior izquierda del mapa de bits de origen.

ySrc
Especifica la coordenada y lógica de la esquina superior izquierda del mapa de bits de origen.

maskBitmap
Identifica el mapa de bits de máscara monocromática combinado con el mapa de bits de color en el contexto de dispositivo de origen.

xMask
Especifica el desplazamiento horizontal de píxeles para el mapa de bits de máscara especificado por el parámetro maskBitmap.

yMask
Especifica el desplazamiento vertical de píxeles para el mapa de bits de máscara especificado por el parámetro maskBitmap.

dwRop
Especifica los códigos de operación de trama ternario en primer plano y en segundo plano, que la función usa para controlar la combinación de datos de origen y destino. El código de operación de trama de segundo plano se almacena en el byte superior de la palabra superior de este valor; el código de operación de trama de primer plano se almacena en el byte inferior de la palabra superior de este valor; se omite la palabra inferior de este valor y debe ser cero. La macro MAKEROP4 crea estas combinaciones de códigos de operación de trama de primer plano y segundo plano. Consulte la sección Comentarios para ver una descripción de los conceptos de primer plano y segundo plano en el contexto de esta función. Consulte la función miembro BitBlt para ver una lista de códigos de operación de trama comunes.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Un valor de 1 en la máscara especificada por maskBitmap indica que el código de operación de trama de primer plano especificado por dwRop debe aplicarse en esa ubicación. Un valor de 0 en la máscara indica que el código de operación de trama de segundo plano especificado por dwRop debe aplicarse en esa ubicación. Si las operaciones de trama requieren un origen, el rectángulo de máscara debe cubrir el rectángulo de origen. Si no es así, se produce un error en la función. Si las operaciones de trama no requieren un origen, el rectángulo de máscara debe cubrir el rectángulo de destino. Si no es así, se produce un error en la función.

Si una transformación de rotación o distorsión está en vigor para el contexto de dispositivo de origen cuando se llama a esta función, se produce un error. Aun así, se permiten otros tipos de transformaciones.

Si los formatos de color de los mapas de bits de origen, patrón y destino difieren, esta función convierte el formato de patrón o de origen (o ambos) para que coincidan con el formato de destino. Si el mapa de bits de máscara no es un mapa de bits monocromo, se produce un error. Cuando se registra un metarchivo mejorado, se produce un error (y la función devuelve 0) si el contexto de dispositivo de origen identifica un contexto de dispositivo de metarchivo mejorado. No todos los dispositivos admiten MaskBlt. Una aplicación debe llamar a GetDeviceCaps para determinar si un dispositivo admite esta función. Si no se proporciona ningún mapa de bits de máscara, esta función se comporta exactamente como BitBlt, mediante el uso del código de operación de trama de primer plano. Los desplazamientos de píxeles en el mapa de bits de máscara se asignan al punto (0,0) en el mapa de bits del contexto de dispositivo de origen. Esto es útil para los casos en los que un mapa de bits de máscara contiene un conjunto de máscaras. Una aplicación puede aplicar fácilmente cualquiera de ellas a una tarea de enmascaramiento mediante el ajuste de los desplazamientos de píxeles y los tamaños de rectángulo que se envían a MaskBlt.

CDC::ModifyWorldTransform

Cambia la transformación global de un contexto de dispositivo mediante el modo especificado.

BOOL ModifyWorldTransform(
    const XFORM& rXform,
    DWORD iMode);

Parámetros

rXform
Referencia a una estructura XFORM usada para modificar la transformación global para el contexto de dispositivo determinado.

iMode
Especifica la forma en que los datos de transformación modifican la transformación global actual. Para obtener una lista de los valores que puede tomar este parámetro, consulte ModifyWorldTransform.

Valor devuelto

Devuelve un valor distinto de cero si se ejecuta correctamente.

Devuelve 0 en caso de error.

Para obtener información de errores extendida, realice una llamada a GetLastError.

Comentarios

Este método encapsula la función GDI de Windows ModifyWorldTransform.

CDC::MoveTo

Mueve la posición actual al punto especificado por x y y (o por point).

CPoint MoveTo(
    int x,
    int y);

CPoint MoveTo(POINT point);

Parámetros

x
Especifica la coordenada x lógica de la nueva posición.

y
Especifica la coordenada y lógica de la nueva posición.

point
Especifica la nueva posición. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Las coordenadas x e y de la posición anterior como un objeto CPoint.

Ejemplo

Vea el ejemplo de CRect::CenterPoint.

CDC::OffsetClipRgn

Mueve la zona de recorte del contexto de dispositivo según los desplazamientos especificados.

int OffsetClipRgn(
    int x,
    int y);

int OffsetClipRgn(SIZE size);

Parámetros

x
Especifica el número de unidades lógicas que se van a mover a la izquierda o a la derecha.

y
Especifica el número de unidades lógicas que se van a mover hacia arriba o hacia abajo.

size
Especifica la cantidad que se va a desplazar.

Valor devuelto

El tipo de la nueva región. Puede tener cualquiera de los valores siguientes:

  • COMPLEXREGION: la zona de recorte tiene bordes superpuestos.

  • ERROR El contexto del dispositivo no es válido.

  • NULLREGION: la zona de recorte está vacía.

  • SIMPLEREGION: la zona de recorte no tiene bordes superpuestos.

Comentarios

La función mueve la región x unidades a lo largo del eje x y y unidades a lo largo del eje y.

CDC::OffsetViewportOrg

Modifica las coordenadas del origen del área de visualización en relación con las coordenadas del origen del área de visualización actual.

virtual CPoint OffsetViewportOrg(
    int nWidth,
    int nHeight);

Parámetros

nWidth
Especifica el número de unidades de dispositivo que se van a agregar a la coordenada x del origen actual.

nHeight
Especifica el número de unidades de dispositivo que se van a agregar a la coordenada y del origen actual.

Valor devuelto

El origen del área de visualización anterior (en coordenadas del dispositivo) como un objeto CPoint.

CDC::OffsetWindowOrg

Modifica las coordenadas del origen de la ventana en relación con las coordenadas del origen de la ventana actual.

CPoint OffsetWindowOrg(
    int nWidth,
    int nHeight);

Parámetros

nWidth
Especifica el número de unidades lógicas que se van a agregar a la coordenada x del origen actual.

nHeight
Especifica el número de unidades lógicas que se van a agregar a la coordenada y del origen actual.

Valor devuelto

El origen de la ventana anterior (en coordenadas lógicas) como un objeto CPoint.

CDC::operator HDC

Use este operador para recuperar el identificador del contexto de dispositivo del objeto CDC.

operator HDC() const;

Valor devuelto

Si se ejecuta correctamente, el identificador del objeto de contexto de dispositivo; de lo contrario, NULL.

Comentarios

Puede usar el manipulador para llamar directamente a las API de Windows.

CDC::PaintRgn

Rellena la región especificada por pRgn con el pincel actual.

BOOL PaintRgn(CRgn* pRgn);

Parámetros

pRgn
Identifica la región que se va a rellenar. Las coordenadas de la región dada se especifican en unidades lógicas.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

CDC::PatBlt

Crea un patrón de bits en el dispositivo.

BOOL PatBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    DWORD dwRop);

Parámetros

x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo que va a recibir el patrón.

y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo que va a recibir el patrón.

nWidth
Especifica el ancho (en unidades lógicas) del rectángulo que va a recibir el patrón.

nHeight
Especifica el alto (en unidades lógicas) del rectángulo que va a recibir el patrón.

dwRop
Especifica el código de operación de trama. Los códigos de operación de trama (ROP) definen cómo combina GDI los colores en las operaciones de salida que implican un pincel actual, un posible mapa de bits de origen y un mapa de bits de destino. Este parámetro puede establecerse con uno de los siguientes valores:

  • PATCOPY: copia el patrón en el mapa de bits de destino.

  • PATINVERT: combina el mapa de bits de destino con el patrón mediante el operador XOR booleano (^).

  • DSTINVERT: invierte el mapa de bits de destino.

  • BLACKNESS: pone en negro toda la salida.

  • WHITENESS: pone en blanco toda la salida.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El patrón es una combinación del pincel seleccionado y el patrón que ya está en el dispositivo. El código de operación de trama especificado por dwRop define cómo se combinarán los patrones. Las operaciones de trama enumeradas para esta función son un subconjunto limitado de los 256 códigos de operación de trama ternarios completos; en concreto, no se puede usar un código de operación de trama que haga referencia a un origen.

No todos los contextos de dispositivo admiten la función PatBlt. Para determinar si un contexto de dispositivo admite PatBlt, llame a la función miembro GetDeviceCaps con el índice RASTERCAPS y compruebe el valor devuelto para la marca RC_BITBLT.

CDC::Pie

Dibuja una cuña en forma circular, para lo que dibuja un arco elíptico cuyo centro y dos extremos están unidos por líneas.

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);

Parámetros

x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).

y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).

x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).

y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).

x3
Especifica la coordenada x del punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

y3
Especifica la coordenada y del punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

x4
Especifica la coordenada x del punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

y4
Especifica la coordenada y del punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.

lpRect
Especifica el rectángulo delimitador. Puede pasar un objeto CRect o un puntero a una estructura RECT para este parámetro.

ptStart
Especifica el punto inicial del arco. Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT estructura o un CPoint objeto para este parámetro.

ptEnd
Especifica el punto de conexión del arco. Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT estructura o un CPoint objeto para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El centro del arco es el centro del rectángulo delimitador especificado por x1, y1, x2 y y2 (o lpRect). Los puntos inicial y final del arco se especifican mediante x3, y3, x4 y y4 (o ptStart y ptEnd).

El arco se dibuja con el lápiz seleccionado en sentido contrario a las agujas del reloj. Se dibujan dos líneas más de cada punto de conexión al centro del arco. El área con forma circular se rellena con el pincel actual. Si x3 es igual a x4 y y3 es igual a y4, el resultado es una elipse con una sola línea desde el centro de la elipse hasta el punto (x3, y3) o (x4, y4).

La ilustración dibujada por esta función se extiende hasta pero no incluye las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2 - y1 y el ancho es x2 - x1. Tanto el ancho como el alto del rectángulo delimitador deben tener más de 2 unidades y menos de 32 767.

Ejemplo

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

Reproduce el contenido del metarchivo especificado en el contexto de dispositivo.

BOOL PlayMetaFile(HMETAFILE hMF);

BOOL PlayMetaFile(
    HENHMETAFILE hEnhMetaFile,
    LPCRECT lpBounds);

Parámetros

hMF
Identifica el metarchivo que se va a reproducir.

hEnhMetaFile
Identifica el metarchivo mejorado.

lpBounds
Apunta a una estructura RECT o un objeto CRect que contiene las coordenadas del rectángulo delimitador usado para mostrar la imagen. Las coordenadas se especifican en unidades lógicas.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El metarchivo se puede reproducir cualquier número de veces.

La segunda versión de PlayMetaFile muestra la imagen almacenada en el metarchivo de formato mejorado. Cuando una aplicación llama a la segunda versión de PlayMetaFile, Windows usa el marco de imagen en el encabezado de metarchivo mejorado para asignar la imagen al rectángulo al que apunta el parámetro lpBounds. (Esta imagen se puede distorsionar o girar si se establece la transformación global en el dispositivo de salida antes de llamar a PlayMetaFile). Los puntos a lo largo de los bordes del rectángulo se incluyen en la imagen. Se puede recortar una imagen de metarchivo mejorado si se define la zona de recorte en el dispositivo de salida antes de reproducir el metarchivo mejorado.

Si un metarchivo mejorado contiene una paleta opcional, una aplicación puede lograr colores coherentes si se configura una paleta de colores en el dispositivo de salida antes de llamar a la segunda versión de PlayMetaFile. Para recuperar la paleta opcional, use la función GetEnhMetaFilePaletteEntries de Windows. Un metarchivo mejorado se puede insertar en un metarchivo mejorado recién creado. Para ello, es necesario llamar a la segunda versión de PlayMetaFile y reproducir el metarchivo mejorado de origen en el contexto de dispositivo del nuevo metarchivo mejorado.

Esta función conserva los estados del contexto de dispositivo de salida. Esta función elimina cualquier objeto que se haya creado pero no eliminado del metarchivo mejorado. Para detener esta función, una aplicación puede llamar a la función CancelDC de Windows desde otro subproceso para finalizar la operación. En este caso, la función devuelve cero.

CDC::PlgBlt

Realiza una transferencia de bloques de bits de los bits de datos de color desde el rectángulo especificado en el contexto de dispositivo de origen hasta el paralelogramo especificado en el contexto de dispositivo determinado.

BOOL PlgBlt(
    LPPOINT lpPoint,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nWidth,
    int nHeight,
    CBitmap& maskBitmap,
    int xMask,
    int yMask);

Parámetros

lpPoint
Apunta a una matriz de tres puntos en el espacio lógico que identifica tres esquinas del paralelogramo de destino. La esquina superior izquierda del rectángulo de origen se asigna al primer punto de esta matriz, la esquina superior derecha al segundo punto de esta matriz y la esquina inferior izquierda al tercer punto. La esquina inferior derecha del rectángulo de origen se asigna al cuarto punto implícito del paralelismo.

pSrcDC
Identifica el contexto de dispositivo de origen.

xSrc
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.

ySrc
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.

nWidth
Especifica el ancho, en unidades lógicas, del rectángulo de origen.

nHeight
Especifica el alto, en unidades lógicas, del rectángulo de origen.

maskBitmap
Identifica un mapa de bits monocromo opcional que se usa para enmascarar los colores del rectángulo de origen.

xMask
Especifica la coordenada x de la esquina superior izquierda del mapa de bits monocromo.

yMask
Especifica la coordenada y de la esquina superior izquierda del mapa de bits monocromo.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Si el identificador de máscara de bits determinado identifica un mapa de bits monocromático válido, la función usa este mapa de bits para enmascarar los bits de datos de color del rectángulo de origen.

Para definir el cuarto vértice del paralelogramo (D), los tres primeros puntos (A, B y C) se tratan como vectores y se calcula que D = B + C - A.

Si la máscara de bits existe, un valor de 1 en la máscara indica que el color de píxel de origen debe copiarse en el destino. Un valor de 0 en la máscara indica que no se va a cambiar el color del píxel de destino.

Si el rectángulo de máscara es menor que los rectángulos de origen y destino, la función replica el patrón de máscara.

Las transformaciones de escalado, traducción y reflexión se permiten en el contexto del dispositivo de origen; sin embargo, las transformaciones de rotación y de descilación no son. Si el mapa de bits de máscara no es un mapa de bits monocromo, se produce un error. El modo de extensión para el contexto de dispositivo de destino se usa para determinar cómo se estiran o se comprimen los píxeles, si es necesario. Cuando se registra un metarchivo mejorado, se produce un error si el contexto de dispositivo de origen identifica un contexto de dispositivo de metarchivo mejorado.

Las coordenadas de destino se transforman según el contexto de dispositivo de destino; las coordenadas de origen se transforman según el contexto de dispositivo de origen. Si la transformación de origen tiene una rotación o distorsión, se devuelve un error. Si los rectángulos de origen y de destino no tienen el mismo formato de color, PlgBlt convierte el rectángulo de origen para que coincida con el rectángulo de destino. No todos los dispositivos admiten PlgBlt. Para obtener más información, consulte la descripción de la funcionalidad de trama RC_BITBLT en la función miembro CDC::GetDeviceCaps.

Si los contextos de dispositivo de origen y destino representan dispositivos incompatibles, PlgBlt devuelve un error.

CDC::PolyBezier

Dibuja una o varias B-splines.

BOOL PolyBezier(
    const POINT* lpPoints,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras de datos POINT que contienen los extremos y los puntos de control de las curvas spline.

nCount
Especifica el número de puntos de la matriz lpPoints. Este valor debe ser uno más de tres veces el número de splines que se van a dibujar, ya que cada spline Bzier requiere dos puntos de control y un punto de conexión, y la spline inicial requiere otro punto de partida.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función dibuja B-splines cúbicas mediante los extremos y los puntos de control especificados por el parámetro lpPoints. La primera spline se dibuja desde el primer punto hasta el cuarto. Para ello, el segundo y el tercer punto se usan como puntos de control. Cada curva spline posterior de la secuencia necesita exactamente tres puntos más: el punto final de la curva spline anterior se usa como punto inicial, los dos puntos siguientes de la secuencia son puntos de control y el tercero es el punto final.

La función no usa ni actualiza la PolyBezier posición actual. La figura no se rellena. Esta función dibuja líneas con el lápiz actual.

CDC::PolyBezierTo

Dibuja una o varias B-splines.

BOOL PolyBezierTo(
    const POINT* lpPoints,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras de datos POINT que contienen los extremos y los puntos de control.

nCount
Especifica el número de puntos de la matriz lpPoints. Este valor debe ser tres veces el número de splines que se van a dibujar, ya que cada B-spline requiere dos puntos de control y un punto final.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función dibuja B-splines cúbicas mediante los puntos de control especificados por el parámetro lpPoints. La primera curva spline se dibuja desde la posición actual hasta el tercer punto. Para ello, los dos primeros puntos se usan como puntos de control. Para cada curva spline posterior, la función necesita exactamente tres puntos más y usa el punto final de la curva spline anterior como punto inicial de la siguiente. PolyBezierTo mueve la posición actual al punto final de la última B-spline. La figura no se rellena. Esta función dibuja líneas con el lápiz actual.

Ejemplo

Vea el ejemplo de CDC::BeginPath.

CDC::PolyDraw

Dibuja un conjunto de segmentos de línea y B-splines.

BOOL PolyDraw(
    const POINT* lpPoints,
    const BYTE* lpTypes,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras de datos POINT que contiene los extremos de cada segmento de línea y los extremos y puntos de control de cada B-spline.

lpTypes
Apunta a una matriz que especifica cómo se usa cada punto de la matriz lpPoints. Los valores pueden ser cualquier de los siguientes:

  • PT_MOVETO: especifica que este punto inicia una figura no contigua. Este punto se convierte en la nueva posición actual.

  • PT_LINETO: especifica que se va a dibujar una línea desde la posición actual hasta este punto, que luego se convierte en la nueva posición actual.

  • PT_BEZIERTO: especifica que este punto es un punto de control o un punto final de una B-spline.

PT_BEZIERTO: los tipos siempre se producen en conjuntos de tres. La posición actual define el punto inicial de la B-spline. Los dos primeros puntos PT_BEZIERTO son los puntos de control y el tercer punto PT_BEZIERTO es el punto final. Este punto final se convierte en la nueva posición actual. Si no hay tres puntos consecutivos PT_BEZIERTO , se produce un error.

Un tipo PT_LINETO o PT_BEZIERTO puede combinarse con la constante siguiente mediante el operador bit a bit OR para indicar que el punto correspondiente es el último punto de una figura y que la figura debe cerrarse:

  • PT_CLOSEFIGURE: especifica que la figura se cierra automáticamente después de que se realice el tipo PT_LINETO o PT_BEZIERTO para este punto. Una línea se dibuja desde este punto hasta el punto PT_MOVETO o MoveTo más reciente.

    Esta marca se combina con el tipo PT_LINETO de una línea, o con el tipo PT_BEZIERTO del punto final de una B-spline mediante el operador OR bit a bit. La posición actual se establece en el punto final de la línea de cierre.

nCount
Especifica el número total de puntos de la matriz lpPoints, igual que el número de bytes de la matriz lpTypes.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función se puede usar para dibujar figuras no contiguas, en lugar de llamadas consecutivas a funciones miembro CDC::MoveTo, CDC::LineTo y CDC::PolyBezierTo. Las líneas y splines se dibujan con el lápiz actual y las figuras no se rellenan. Si hay una ruta de acceso activa iniciada llamando a la CDC::BeginPath función miembro, PolyDraw agrega a la ruta de acceso. Los puntos contenidos en la matriz lpPoints y en lpTypes indican si cada punto forma parte de una operación CDC::MoveTo, CDC::LineTo o CDC::BezierTo. También es posible cerrar cifras. Esta función actualiza la posición actual.

Ejemplo

Vea el ejemplo de CDC::BeginPath.

CDC::Polygon

Dibuja un polígono que consta de dos o más puntos (vértices) conectados por líneas con el lápiz actual.

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de puntos que especifica los vértices del polígono. Cada punto de la matriz es una estructura POINT o un objeto CPoint.

nCount
Especifica el número de vértices de la matriz.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El sistema cierra el polígono automáticamente, si es necesario. Para ello, dibuja una línea del último vértice al primero.

El modo de relleno de polígono actual se puede recuperar o establecer mediante las funciones miembro GetPolyFillMode y SetPolyFillMode.

Ejemplo

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

Dibuja un conjunto de segmentos de línea que conectan los puntos especificados por lpPoints.

BOOL Polyline(
    LPPOINT lpPoints,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras POINT u objetos CPoint que se van a conectar.

nCount`
Especifica el número de puntos de la matriz. Este valor debe ser al menos 2.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Las líneas se dibujan desde el primer punto hasta los puntos posteriores con el lápiz actual. A diferencia de la LineTo función miembro, la Polyline función no usa ni actualiza la posición actual.

Para más información, consulte PolyLine en Windows SDK.

CDC::PolylineTo

Dibuja una o varias líneas rectas.

BOOL PolylineTo(
    const POINT* lpPoints,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras de datos POINT que contiene los vértices de la línea.

nCount
Especifica el número de puntos de la matriz.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Una línea se dibuja desde la posición actual hasta el primer punto especificado por el parámetro lpPoints con el lápiz actual. Para cada línea adicional, la función dibuja desde el punto final de la línea anterior hasta el siguiente punto especificado por lpPoints. PolylineTo mueve la posición actual al punto final de la última línea. Si los segmentos de línea dibujados por esta función forman una figura cerrada, la figura no se rellena.

CDC::PolyPolygon

Crea dos o más polígonos que se rellenan mediante el modo de relleno de polígono actual.

BOOL PolyPolygon(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras POINT u objetos CPoint que definen los vértices de los polígonos.

lpPolyCounts
Apunta a una matriz de enteros, cada uno de los cuales especifica el número de puntos de uno de los polígonos de la matriz lpPoints.

nCount
Número de entradas de la matriz lpPolyCounts. Este número especifica el número de polígonos que se van a dibujar. Este valor debe ser al menos 2.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Los polígonos pueden estar separados o superponerse.

Cada polígono especificado en una llamada a la función PolyPolygon debe estar cerrado. A diferencia de los polígonos creados por la Polygon función miembro, los polígonos creados por PolyPolygon no se cierran automáticamente.

La función crea dos o más polígonos. Para crear un único polígono, una aplicación debe usar la función miembro Polygon.

El modo de relleno de polígono actual se puede recuperar o establecer mediante las funciones miembro GetPolyFillMode y SetPolyFillMode.

CDC::PolyPolyline

Dibuja varias series de segmentos de línea conectados.

BOOL PolyPolyline(
    const POINT* lpPoints,
    const DWORD* lpPolyPoints,
    int nCount);

Parámetros

lpPoints
Apunta a una matriz de estructuras que contiene los vértices de las Polilíneas. Las Polilíneas se especifican de forma consecutiva.

lpPolyPoints
Apunta a una matriz de variables que especifican el número de puntos de la matriz lpPoints para el polígono correspondiente. Cada entrada debe ser mayor o igual que 2.

nCount
Especifica el número total de recuentos de la matriz lpPolyPoints.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Los segmentos de línea se dibujan mediante el lápiz actual. Las figuras formadas por los segmentos no se rellenan. Esta función no usa ni actualiza la posición actual.

CDC::PtVisible

Determina si el punto especificado está dentro de la zona de recorte del contexto de dispositivo.

virtual BOOL PtVisible(
    int x,
    int y) const;

BOOL PtVisible(POINT point) const;

Parámetros

x
Especifica la coordenada x lógica del punto.

y
Especifica la coordenada y lógica del punto.

point
Especifica el punto que se va a comprobar en coordenadas lógicas. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Distinto de cero si el punto especificado está dentro de la zona de recorte; de lo contrario, 0.

CDC::QueryAbort

Llama a la función de anulación instalada por la función miembro SetAbortProc para una aplicación de impresión y consulta si se debe finalizar la impresión.

BOOL QueryAbort() const;

Valor devuelto

El valor devuelto es distinto de cero si la impresión debe continuar o si no hay ningún procedimiento de anulación. Es 0 si se debe finalizar el trabajo de impresión. La función de anulación proporciona el valor devuelto.

CDC::RealizePalette

Asigna entradas de la paleta lógica actual a la paleta del sistema.

UINT RealizePalette();

Valor devuelto

Indica cuántas entradas de la paleta lógica se asignaron a diferentes entradas de la paleta del sistema. Representa el número de entradas que esta función reasignó para dar cabida a los cambios en la paleta del sistema desde que la paleta lógica se implementó por última vez.

Comentarios

Una paleta de colores lógica actúa como un búfer entre aplicaciones de uso intensivo de colores y el sistema, lo que permite que una aplicación use tantos colores como sea necesario sin interferir con los colores que muestra o con colores que muestran otras ventanas.

Cuando una ventana tiene el foco de entrada y llama a RealizePalette, Windows garantiza que la ventana mostrará todos los colores solicitados, hasta el número máximo disponible simultáneamente en la pantalla. Windows también muestra los colores que no se encuentran en la paleta de la ventana. Para ello, los hace coincidir con los colores disponibles.

Además, Windows hace coincidir los colores solicitados por ventanas inactivas que llaman a la función lo más fielmente posible con los colores disponibles. Esto reduce considerablemente los cambios no deseados en los colores mostrados en ventanas inactivas.

CDC::Rectangle

Dibuja un rectángulo con el lápiz actual.

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

BOOL Rectangle(LPCRECT lpRect);

Parámetros

x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo (en unidades lógicas).

y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo (en unidades lógicas).

x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo (en unidades lógicas).

y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo (en unidades lógicas).

lpRect
Especifica el rectángulo en unidades lógicas. Puede pasar un objeto CRect o un puntero a una estructura RECT para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El interior del rectángulo se rellena con el pincel actual.

El rectángulo se extiende hasta, pero no incluye, las coordenadas derecha e inferior. Esto significa que el alto del rectángulo es y2 - y1 y su ancho, x2 - x1. Tanto el ancho como el alto de un rectángulo deben tener más de 2 unidades y menos de 32 767.

Ejemplo

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

Determina si alguna parte del rectángulo especificado se encuentra dentro de la zona de recorte del contexto de visualización.

virtual BOOL RectVisible(LPCRECT lpRect) const;

Parámetros

lpRect
Apunta a una estructura RECT o un objeto CRect que contiene las coordenadas lógicas del rectángulo especificado.

Valor devuelto

Distinto de cero si alguna parte del rectángulo especificado se encuentra dentro de la zona de recorte; de lo contrario, 0.

CDC::ReleaseAttribDC

Llame a esta función miembro para establecer m_hAttribDC en null.

virtual void ReleaseAttribDC();

Comentarios

Esto no hace que se produzca una Detach acción. Solo el contexto de dispositivo de salida está asociado al objeto CDC y solo este se puede desasociar.

CDC::ReleaseOutputDC

Llame a esta función miembro para establecer el miembro m_hDC en NULL.

virtual void ReleaseOutputDC();

Comentarios

No se puede llamar a esta función miembro cuando el contexto de dispositivo de salida está asociado al objeto CDC. Use la función miembro Detach para desasociar el contexto de dispositivo de salida.

CDC::ResetDC

Llame a esta función miembro para actualizar el contexto de dispositivo encapsulado por el objeto CDC.

BOOL ResetDC(const DEVMODE* lpDevMode);

Parámetros

lpDevMode
Puntero a una estructura DEVMODE de Windows.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El contexto de dispositivo se actualiza a partir de la información especificada en la estructura DEVMODE de Windows. Esta función miembro solo restablece el contexto de dispositivo de atributo.

Normalmente, una aplicación usará la función miembro ResetDC cuando una ventana procese un mensaje WM_DEVMODECHANGE. También se puede usar esta función miembro para cambiar la orientación del papel o las papeleras al imprimir un documento.

No se puede usar esta función miembro para cambiar el nombre del controlador, el nombre del dispositivo o el puerto de salida. Cuando el usuario cambia la conexión de puerto o el nombre del dispositivo, es necesario eliminar el contexto de dispositivo original y crear un contexto de dispositivo con la nueva información.

Antes de llamar a esta función miembro, hay que asegurarse de que se han deseleccionado todos los objetos (menos los objetos estándar) que se habían seleccionado en el contexto de dispositivo.

CDC::RestoreDC

Restaura el contexto de dispositivo al estado anterior identificado por nSavedDC.

virtual BOOL RestoreDC(int nSavedDC);

Parámetros

nSavedDC
Especifica el contexto de dispositivo que debe restaurarse. Puede ser un valor devuelto por una llamada a la función SaveDC anterior. Si nSavedDC es -1, se restaura el contexto de dispositivo guardado más recientemente.

Valor devuelto

Distinto de cero si se restauró el contexto especificado; de lo contrario, 0.

Comentarios

RestoreDC restaura el contexto de dispositivo. Para ello, quita la información de estado de una pila creada por llamadas anteriores a la función miembro SaveDC.

La pila puede contener información de estado de varios contextos de dispositivo. Si el contexto especificado por nSavedDC no está en la parte superior de la pila, RestoreDC elimina toda la información de estado entre el contexto del dispositivo especificado por nSavedDC y la parte superior de la pila. La información eliminada se pierde.

CDC::RoundRect

Dibuja un rectángulo con esquinas redondeadas con el lápiz actual.

BOOL RoundRect(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

BOOL RoundRect(
    LPCRECT lpRect,
    POINT point);

Parámetros

x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo (en unidades lógicas).

y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo (en unidades lógicas).

x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo (en unidades lógicas).

y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo (en unidades lógicas).

x3
Especifica el ancho de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas).

y3
Especifica el alto de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas).

lpRect
Especifica el rectángulo delimitador en unidades lógicas. Puede pasar un objeto CRect o un puntero a una estructura RECT para este parámetro.

point
La coordenada x de point especifica el ancho de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas). La coordenada y de point especifica el alto de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas). Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El interior del rectángulo se rellena con el pincel actual.

La figura que dibuja esta función se extiende hasta, pero no incluye las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2 - y1 y el ancho es x2 - x1. Tanto el alto como el ancho del rectángulo delimitador deben tener más de 2 unidades y menos de 32 767.

Ejemplo

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

Guarda el estado actual del contexto de dispositivo. Para ello, copia información de estado (como la zona de recorte, los objetos seleccionados y el modo de asignación) en una pila de contexto mantenida por Windows.

virtual int SaveDC();

Valor devuelto

Un entero que identifica el contexto de dispositivo guardado. Es 0 si se produce un error. Este valor devuelto se puede usar para restaurar el contexto de dispositivo mediante una llamada a RestoreDC.

Comentarios

El contexto de dispositivo guardado se puede restaurar más adelante mediante RestoreDC.

SaveDC se puede usar cualquier número de veces para guardar cualquier número de estados de contexto de dispositivo.

CDC::ScaleViewportExt

Modifica las extensiones del área de visualización en relación con los valores actuales.

virtual CSize ScaleViewportExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

Parámetros

xNum
Especifica la cantidad por la que se va a multiplicar la extensión x actual.

xDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión x actual por el valor del parámetro xNum.

yNum
Especifica la cantidad por la que se va a multiplicar la extensión y actual.

yDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión y actual por el valor del parámetro yNum.

Valor devuelto

Las extensiones del área de visualización anteriores (en unidades de dispositivo) como un objeto CSize.

Comentarios

Las fórmulas se escriben de la manera siguiente:

xNewVE = ( xOldVE * xNum ) / xDenom

yNewVE = ( yOldVE * yNum ) / yDenom

Las nuevas extensiones del área de visualización se calculan multiplicando las extensiones actuales por el numerador especificado y dividiendo por el denominador especificado.

CDC::ScaleWindowExt

Modifica las extensiones de la ventana en relación con los valores actuales.

virtual CSize ScaleWindowExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

Parámetros

xNum
Especifica la cantidad por la que se va a multiplicar la extensión x actual.

xDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión x actual por el valor del parámetro xNum.

yNum
Especifica la cantidad por la que se va a multiplicar la extensión y actual.

yDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión y actual por el valor del parámetro yNum.

Valor devuelto

Las extensiones del área de visualización anterior (en unidades lógicas) como un objeto CSize.

Comentarios

Las fórmulas se escriben de la manera siguiente:

xNewWE = ( xOldWE * xNum ) / xDenom

yNewWE = ( yOldWE * yNum ) / yDenom

Las nuevas extensiones de la ventana se calculan multiplicando las extensiones actuales por el numerador especificado y dividiendo por el denominador especificado.

CDC::ScrollDC

Desplaza un rectángulo de bits horizontal y verticalmente.

BOOL ScrollDC(
    int dx,
    int dy,
    LPCRECT lpRectScroll,
    LPCRECT lpRectClip,
    CRgn* pRgnUpdate,
    LPRECT lpRectUpdate);

Parámetros

dx
Especifica el número de unidades de desplazamiento horizontal.

dy
Especifica el número de unidades de desplazamiento vertical.

lpRectScroll
Apunta a la estructura RECT o el objeto CRect que contiene las coordenadas del rectángulo de desplazamiento.

lpRectClip
Apunta a la estructura RECT o el objeto CRect que contiene las coordenadas del rectángulo de recorte. Cuando este rectángulo es menor que el original al que apunta lpRectScroll, el desplazamiento solo se produce en el rectángulo más pequeño.

pRgnUpdate
Identifica la región revelada por el proceso de desplazamiento. La ScrollDC función define esta región; no es necesariamente un rectángulo.

lpRectUpdate
Apunta a la estructura RECT o el objeto CRect que recibe las coordenadas del rectángulo que rodea la región de actualización del desplazamiento. Es el área rectangular más grande que hay que volver a pintar. Los valores de la estructura u objeto cuando se devuelve la función están en coordenadas cliente, independientemente del modo de asignación del contexto de dispositivo determinado.

Valor devuelto

Distinto de cero si se ejecuta el desplazamiento; de lo contrario, 0.

Comentarios

Si lpRectUpdate es NULL, Windows no calcula el rectángulo de actualización. Si y pRgnUpdate lpRectUpdate son NULL, Windows no calcula la región de actualización. Si pRgnUpdate no NULLes , Windows da por hecho que contiene un puntero válido a la región descubierta por el proceso de desplazamiento (definido por la ScrollDC función miembro). La región de actualización devuelta en lpRectUpdate se puede pasar a CWnd::InvalidateRgn si es necesario.

Una aplicación debe usar la ScrollWindow función miembro de la clase CWnd cuando sea necesario desplazar todo el área de cliente de una ventana. De lo contrario, debe usar ScrollDC.

CDC::SelectClipPath

Selecciona el trazado actual como zona de recorte para el contexto de dispositivo, y combina la nueva región con cualquier zona de recorte existente mediante el modo especificado.

BOOL SelectClipPath(int nMode);

Parámetros

nMode
Especifica la forma de usar el trazado. Se admiten los valores siguientes:

  • RGN_AND: la nueva zona de recorte incluye la intersección (las áreas superpuestas) de la zona de recorte actual y el trazado actual.

  • RGN_COPY: la nueva zona de recorte es el trazado actual.

  • RGN_DIFF: la nueva zona de recorte incluye las áreas de la zona de recorte actual, y las del trazado actual se excluyen.

  • RGN_OR: la nueva zona de recorte incluye la unión (las áreas combinadas) de la zona de recorte actual y el trazado actual.

  • RGN_XOR: la nueva zona de recorte incluye la unión de la zona de recorte actual y el trazado actual, pero sin las áreas superpuestas.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El contexto de dispositivo identificado debe contener un trazado cerrado.

CDC::SelectClipRgn

Selecciona la región especificada como la zona de recorte actual para el contexto de dispositivo.

int SelectClipRgn(CRgn* pRgn);

int SelectClipRgn(
    CRgn* pRgn,
    int nMode);

Parámetros

pRgn
Identifica la región que se va a seleccionar.

  • Para la primera versión de esta función, si este valor es NULL, se selecciona toda el área cliente y la salida sigue recortándose en la ventana.

  • Para la segunda versión de esta función, este identificador puede ser NULL solo cuando se especifica el modo RGN_COPY.

nMode
Especifica la operación que se va a realizar. Debe tener uno de los siguientes valores:

  • RGN_AND: la nueva zona de recorte combina las áreas superpuestas de la zona de recorte actual y la región identificada por pRgn.

  • RGN_COPY: la nueva zona de recorte es una copia de la región identificada por pRgn. Esta funcionalidad es idéntica a la primera versión de SelectClipRgn. Si la región identificada por pRgn es NULL, la nueva zona de recorte se convierte en la zona de recorte predeterminada (una región nula).

  • RGN_DIFF: la nueva zona de recorte combina las áreas de la zona de recorte actual con esas áreas excluidas de la región identificada por pRgn.

  • RGN_OR: la nueva zona de recorte combina la zona de recorte actual y la región identificada por pRgn.

  • RGN_XOR: la nueva zona de recorte combina la zona de recorte actual y la región identificada por pRgn, pero excluye las áreas superpuestas.

Valor devuelto

El tipo de la región. Puede ser cualquiera de los siguientes valores:

  • COMPLEXREGION: la nueva zona de recorte tiene bordes superpuestos.

  • ERROR El contexto o la región del dispositivo no son válidos.

  • NULLREGION: la nueva zona de recorte está vacía.

  • SIMPLEREGION: la nueva zona de recorte no tiene bordes superpuestos.

Comentarios

Solo se usa una copia de la región seleccionada. La propia región puede seleccionarse para cualquier número de otros contextos de dispositivo, o bien puede eliminarse.

La función da por supuesto que las coordenadas de la región especificada se especifican en unidades de dispositivo. Algunos dispositivos de impresora admiten la salida de texto en una resolución superior a la salida de gráficos para conservar la precisión necesaria para expresar las métricas de texto. Estos dispositivos notifican unidades de dispositivo en la resolución más alta, es decir, en unidades de texto. A continuación, estos dispositivos escalan las coordenadas de los gráficos para que varias unidades de dispositivo notificadas se asignen únicamente a una unidad gráfica. Siempre se debe llamar a la función SelectClipRgn mediante unidades de texto.

Las aplicaciones que deben tomar el escalado de objetos gráficos en GDI pueden usar el escape de impresora GETSCALINGFACTOR para determinar el factor de escalado. Este factor de escalado afecta al recorte. Si se usa una región para recortar gráficos, GDI divide las coordenadas por el factor de escalado. Si la región se usa para recortar texto, GDI no realiza ningún ajuste de escalado. Un factor de escalado de 1 hace que las coordenadas se dividan entre 2; un factor de escalado de 2 hace que las coordenadas se dividan entre 4; y así sucesivamente.

CDC::SelectObject

Selecciona un objeto en el contexto de dispositivo.

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);

Parámetros

pPen
Puntero a un objeto CPen que se va a seleccionar.

pBrush
Puntero a un objeto CBrush que se va a seleccionar.

pFont
Puntero a un objeto CFont que se va a seleccionar.

pBitmap
Puntero a un objeto CBitmap que se va a seleccionar.

pRgn
Puntero a un objeto CRgn que se va a seleccionar.

pObject
Puntero a un objeto CGdiObject que se va a seleccionar.

Valor devuelto

Un puntero al objeto que se va a reemplazar. Se trata de un puntero a un objeto de una de las clases derivadas de CGdiObject, como CPen, según qué versión de la función se use. El valor devuelto es NULL si se produce un error. Esta función puede devolver un puntero a un objeto temporal. Este objeto temporal solo es válido durante el procesamiento de un mensaje de Windows. Para obtener más información, vea CGdiObject::FromHandle.

La versión de la función miembro que toma un parámetro de región realiza la misma tarea que la función miembro SelectClipRgn. Su valor devuelto puede ser cualquiera de los siguientes:

  • COMPLEXREGION: la nueva zona de recorte tiene bordes superpuestos.

  • ERROR El contexto o la región del dispositivo no son válidos.

  • NULLREGION: la nueva zona de recorte está vacía.

  • SIMPLEREGION: la nueva zona de recorte no tiene bordes superpuestos.

Comentarios

La clase CDC proporciona cinco versiones especializadas para determinados tipos de objetos de GDI, incluidos lápices, pinceles, fuentes, mapas de bits y regiones. El objeto recién seleccionado reemplaza al objeto anterior del mismo tipo. Por ejemplo, si el objeto pObject de la versión general de SelectObject apunta a un objeto CPen, la función reemplaza el lápiz actual por el lápiz especificado por pObject.

Una aplicación solo puede seleccionar un mapa de bits en contextos de dispositivo de memoria y solo en un contexto de dispositivo de memoria de cada vez. El formato del mapa de bits debe ser monocromo o ser compatible con el contexto del dispositivo; Si no es así, SelectObject devuelve un error.

Para Windows 3.1 y versiones posteriores, la SelectObject función devuelve el mismo valor si se usa en un metarchivo o no. En versiones anteriores de Windows, SelectObject devolvía un valor distinto de cero en caso de que la operación se realizase correctamente y 0 en caso de que se produjese un error al usarse en un metarchivo.

CDC::SelectPalette

Selecciona la paleta lógica especificada por pPalette como el objeto de paleta seleccionado del contexto de dispositivo.

CPalette* SelectPalette(
    CPalette* pPalette,
    BOOL bForceBackground);

Parámetros

pPalette
Identifica la paleta lógica que se va a seleccionar. Esta paleta ya debe haberse creado con la función miembro CreatePalette de CPalette.

bForceBackground
Especifica si se obliga a que la paleta lógica sea una paleta de fondo. Si bForceBackground es distinto de cero, la paleta seleccionada es siempre una paleta de fondo, independientemente de si la ventana tiene el foco de entrada. Si bForceBackground es 0 y el contexto de dispositivo está asociado a una ventana, la paleta lógica es una paleta de primer plano cuando la ventana tiene el foco de entrada.

Valor devuelto

Un puntero a un objeto CPalette que identifica la paleta lógica reemplazada por la paleta que se especifica mediante pPalette. NULL Es si hay un error.

Comentarios

La nueva paleta se convierte en el objeto de paleta que GDI usa para controlar los colores que se muestran en el contexto de dispositivo y reemplaza la paleta anterior.

Una aplicación puede seleccionar una paleta lógica en más de un contexto de dispositivo. Sin embargo, los cambios en una paleta lógica afectarán a todos los contextos de dispositivo para los que está seleccionado. Si una aplicación selecciona una paleta en más de un contexto de dispositivo, todos los contextos de dispositivo deben pertenecer al mismo dispositivo físico.

CDC::SelectStockObject

Selecciona un objeto CGdiObject que se corresponde con uno de los lápices, pinceles o fuentes predefinidos.

virtual CGdiObject* SelectStockObject(int nIndex);

Parámetros

nIndex
Especifica el tipo de objeto estándar deseado. Puede ser uno de los siguientes valores:

  • BLACK_BRUSH: pincel negro.

  • DKGRAY_BRUSH: pincel gris oscuro.

  • GRAY_BRUSH: pincel gris.

  • HOLLOW_BRUSH: pincel hueco.

  • LTGRAY_BRUSH: pincel gris claro.

  • NULL_BRUSH: pincel nulo.

  • WHITE_BRUSH: pincel blanco.

  • BLACK_PEN: lápiz negro.

  • NULL_PEN: lápiz nulo.

  • WHITE_PEN: lápiz blanco.

  • ANSI_FIXED_FONT: fuente fija del sistema ANSI.

  • ANSI_VAR_FONT: fuente variable del sistema ANSI.

  • DEVICE_DEFAULT_FONT: fuente dependiente del dispositivo.

  • OEM_FIXED_FONT: fuente fija dependiente del OEM.

  • SYSTEM_FONT: fuente del sistema. De forma predeterminada, Windows usa la fuente del sistema para dibujar menús, controles de cuadro de diálogo y otro texto. Sin embargo, es mejor no confiar en SYSTEM_FONT para obtener la fuente usada por cuadros de diálogo y ventanas. En su lugar, use la función SystemParametersInfo con el parámetro SPI_GETNONCLIENTMETRICS para recuperar la fuente actual. SystemParametersInfo tiene en cuenta el tema actual y proporciona información de fuente para títulos, menús y cuadros de diálogo de mensaje.

  • SYSTEM_FIXED_FONT: fuente del sistema de ancho fijo usada en Windows antes de la versión 3.0. Este objeto está disponible para la compatibilidad con versiones anteriores de Windows.

  • DEFAULT_PALETTE: paleta de colores predeterminada. Esta paleta consta de los 20 colores estáticos de la paleta del sistema.

Valor devuelto

Un puntero al objeto CGdiObject que se reemplazó si la función se realizó correctamente. El objeto real al que se apunta es un objeto CPen, CBrush o CFont. Si la llamada no se realiza correctamente, el valor devuelto es null.

CDC::SetAbortProc

Instala el procedimiento de anulación para el trabajo de impresión.

int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));

Parámetros

lpfn
Puntero a la función de anulación que se va a instalar como procedimiento de anulación. Para obtener más información sobre la función de devolución de llamada, consulte Función de devolución de llamada para CDC::SetAbortProc.

Valor devuelto

Especifica el resultado de la función SetAbortProc. Algunos de los valores siguientes son más probables que otros, pero todos son posibles.

  • SP_ERROR: error general.

  • SP_OUTOFDISK: no hay suficiente espacio en disco disponible actualmente para la cola y no habrá más espacio disponible.

  • SP_OUTOFMEMORY: no hay suficiente memoria disponible para la cola.

  • SP_USERABORT: el usuario finalizó el trabajo con el Administrador de impresión.

Comentarios

Si una aplicación va a permitir que el trabajo de impresión se cancele durante la cola, debe establecer la función de anulación antes de que se inicie el trabajo de impresión con la función miembro StartDoc. El Administrador de impresión llama a la función de anulación durante la cola para permitir que la aplicación cancele el trabajo de impresión o procese condiciones de espacio insuficiente en disco. Si no se establece ninguna función de anulación, se producirá un error en el trabajo de impresión si no hay suficiente espacio en disco para la cola.

Las características de Microsoft Visual C++ simplifican la creación de la función de devolución de llamada que se pasa a SetAbortProc. La dirección que se pasa a la función miembro EnumObjects es un puntero a una función exportada con __declspec(dllexport) y con la convención de llamada __stdcall.

Tampoco es necesario exportar el nombre de la función en una EXPORTS instrucción en el archivo de definición de módulo de la aplicación. En su lugar, puede usar el modificador de función EXPORT, como en

BOOL CALLBACK EXPORT AFunction( HDC, int );

para que el compilador emita el registro de exportación adecuado para la exportación por nombre sin alias. Esto funciona para la mayoría de las necesidades. En algunos casos especiales, como la exportación de una función por ordinal o mediante la creación de un alias para la exportación, sigue siendo necesario usar una instrucción EXPORTS en un archivo de definición de módulo.

Las interfaces de registro de devolución de llamada ahora son seguras para tipos (debe pasar un puntero de función que apunte al tipo correcto de función para la devolución de llamada específica).

Todas las funciones de devolución de llamada deben interceptar las excepciones de Microsoft Foundation antes de volver a Windows, ya que no se pueden producir excepciones a través de los límites de devolución de llamada. Para obtener más información sobre las excepciones, consulte el artículo Excepciones.

CDC::SetArcDirection

Establece la dirección de dibujo que se va a usar para las funciones de arco y rectángulo.

int SetArcDirection(int nArcDirection);

Parámetros

nArcDirection
Especifica la nueva dirección del arco. Este parámetro puede tener uno de los valores siguientes:

  • AD_COUNTERCLOCKWISE: figuras dibujadas en sentido contrario a las agujas del reloj.

  • AD_CLOCKWISE: figuras dibujadas en el sentido de las agujas del reloj.

Valor devuelto

Especifica la dirección del arco anterior, si es correcta; de lo contrario, 0.

Comentarios

La dirección predeterminada es en el sentido contrario a las agujas del reloj. La función SetArcDirection especifica la dirección en la que dibujan las funciones siguientes:

Arc Circular
ArcTo Rectangle
Chord RoundRect
Ellipse

CDC::SetAttribDC

Llame a esta función para establecer el contexto de dispositivo de atributo, m_hAttribDC.

virtual void SetAttribDC(HDC hDC);

Parámetros

hDC
Un contexto de dispositivo de Windows.

Comentarios

Esta función miembro no asocia el contexto del dispositivo al CDC objeto . Solo el contexto de dispositivo de salida está asociado a un objeto CDC.

CDC::SetBkColor

Establece el color de fondo actual en el color especificado.

virtual COLORREF SetBkColor(COLORREF crColor);

Parámetros

crColor
Especifica el nuevo color de fondo.

Valor devuelto

El color de fondo anterior como un valor de color RGB. Si se produce un error, el valor devuelto es 0x80000000.

Comentarios

Si el modo de fondo es OPAQUE, el sistema usa el color de fondo para rellenar los huecos en las líneas con estilo, los huecos entre las líneas sombreadas en pinceles y el fondo en las celdas de caracteres. El sistema también usa el color de fondo al convertir mapas de bits entre contextos de dispositivo monocromáticos y de color.

Si el dispositivo no puede mostrar el color especificado, el sistema establece el color de fondo en el color físico más cercano.

CDC::SetBkMode

Establece el modo de fondo.

int SetBkMode(int nBkMode);

Parámetros

nBkMode
Especifica el modo que se va a establecer. Este parámetro puede tener uno de los valores siguientes:

  • OPAQUE: el fondo se rellena con el color de fondo actual antes de que se dibuje el texto, el pincel sombreado o el lápiz. Este es el modo de fondo predeterminado.

  • TRANSPARENT El fondo no se cambia antes de dibujar.

Valor devuelto

El modo de fondo anterior.

Comentarios

El modo de fondo define si el sistema quita los colores de fondo existentes en la superficie de dibujo antes de dibujar texto, pinceles sombreados o cualquier estilo de lápiz que no sea una línea sólida.

Ejemplo

Vea el ejemplo de CWnd::OnCtlColor.

CDC::SetBoundsRect

Controla la acumulación de información del rectángulo delimitador para el contexto de dispositivo especificado.

UINT SetBoundsRect(
    LPCRECT lpRectBounds,
    UINT flags);

Parámetros

lpRectBounds
Apunta a una estructura RECT u objeto CRect que se usa para establecer el rectángulo delimitador. Las dimensiones de rectángulo se proporcionan en coordenadas lógicas. Este parámetro puede ser NULL.

flags
Especifica cómo se combinará el nuevo rectángulo con el rectángulo acumulado. Este parámetro puede ser una combinación de los siguientes valores:

  • DCB_ACCUMULATE: agrega el rectángulo especificado por lpRectBounds al rectángulo delimitador (mediante una operación de unión de rectángulo).

  • DCB_DISABLE: desactiva la acumulación de límites.

  • DCB_ENABLE: activa la acumulación de límites. (El valor predeterminado para la acumulación de límites es deshabilitado).

Valor devuelto

El estado actual del rectángulo delimitador si la función se realiza correctamente. Al igual que flags, el valor devuelto puede ser una combinación de valores DCB_:

  • DCB_ACCUMULATE El rectángulo delimitador no está vacío. Este valor siempre se establecerá.

  • DCB_DISABLE: la acumulación de límites está desactivada.

  • DCB_ENABLE: la acumulación de límites está activada.

Comentarios

Windows puede mantener un rectángulo delimitador para todas las operaciones de dibujo. La aplicación puede consultar y restablecer este rectángulo. Los límites de dibujo son útiles para invalidar las memorias caché de mapa de bits.

CDC::SetBrushOrg

Especifica el origen que GDI asignará al siguiente pincel que la aplicación seleccione en el contexto de dispositivo.

CPoint SetBrushOrg(
    int x,
    int y);

CPoint SetBrushOrg(POINT point);

Parámetros

x
Especifica la coordenada x (en unidades de dispositivo) del nuevo origen. Este valor debe estar comprendido entre 0 y 7.

y
Especifica la coordenada y (en unidades de dispositivo) del nuevo origen. Este valor debe estar comprendido entre 0 y 7.

point
Especifica las coordenadas x e y del nuevo origen. Cada valor debe estar comprendido entre 0 y 7. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

El origen anterior del pincel en unidades de dispositivo.

Comentarios

Las coordenadas predeterminadas para el origen del pincel son (0, 0). Para modificar el origen de un pincel, llame a la función UnrealizeObject para el objeto CBrush, llame a SetBrushOrg y, luego, llame a la función miembro SelectObject para seleccionar el pincel en el contexto de dispositivo.

No use SetBrushOrg con objetos stock CBrush .

CDC::SetColorAdjustment

Establece los valores de ajuste de color para el contexto de dispositivo mediante los valores especificados.

BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);

Parámetros

lpColorAdjust
Apunta a una estructura de datos COLORADJUSTMENT que contiene los valores de ajuste de color.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Los valores de ajuste de color se usan para ajustar el color de entrada del mapa de bits de origen para las llamadas a la función miembro CDC::StretchBlt cuando se establece el modo HALFTONE.

CDC::SetDCBrushColor

Establece el color del pincel del contexto de dispositivo (DC) actual en el valor de color especificado.

COLORREF SetDCBrushColor(COLORREF crColor);

Parámetros

crColor
Especifica el nuevo color del pincel.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto especifica el color del pincel del contexto de dispositivo anterior como un valor COLORREF.

Si la función produce un error, el valor devuelto es CLR_INVALID.

Comentarios

Este método emula la funcionalidad de la función SetDCBrushColor, tal y como se describe en Windows SDK.

CDC::SetDCPenColor

Establece el color del lápiz del contexto de dispositivo (DC) actual en el valor de color especificado.

COLORREF SetDCPenColor(COLORREF crColor);

Parámetros

crColor
Especifica el nuevo color del lápiz.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función miembro usa la función SetDCPenColor de Win32, como se describe en Windows SDK.

CDC::SetGraphicsMode

Establece el modo gráfico para el contexto de dispositivo especificado.

int SetGraphicsMode(int iMode);

Parámetros

iMode
Especifica el modo gráfico. Para obtener una lista de los valores que puede tomar este parámetro, consulte SetGraphicsMode.

Valor devuelto

Devuelve el modo gráfico anterior si se ejecuta correctamente.

Devuelve 0 en caso de error. Para obtener información de errores extendida, realice una llamada a GetLastError.

Comentarios

Este método encapsula la función GDI de Windows SetGraphicsMode.

CDC::SetLayout

Llame a esta función miembro para cambiar el diseño del texto y los gráficos de un contexto de dispositivo al diseño de derecha a izquierda, que es el estándar de referencias culturales como árabe y hebreo.

DWORD SetLayout(DWORD dwLayout);

Parámetros

dwLayout
Diseño de contexto de dispositivo y marcas de control de mapa de bits. Puede ser una combinación de los valores siguientes.

Valor Significado
LAYOUT_BITMAPORIENTATIONPRESERVED Deshabilita cualquier reflexión para las llamadas a CDC::BitBlt y CDC::StretchBlt.
LAYOUT_RTL Establece que el diseño horizontal predeterminado es de derecha a izquierda.
LAYOUT_LTR Establece que el diseño predeterminado es de izquierda a derecha.

Valor devuelto

Si se ejecuta correctamente, el diseño anterior del contexto de dispositivo.

Si no se realiza correctamente, GDI_ERROR. Para obtener información de errores extendida, realice una llamada a GetLastError.

Comentarios

Normalmente, no llamaría a SetLayout para una ventana. En su lugar, puede controlar el diseño de derecha a izquierda en una ventana mediante el establecimiento de estilos de ventana extendidos, como WS_EX_RTLREADING. Un contexto de dispositivo, como una impresora o un metarchivo, no hereda este diseño. La única manera de establecer el contexto de dispositivo para un diseño de derecha a izquierda es llamar a SetLayout.

Si llama a SetLayout(LAYOUT_RTL), SetLayout cambia automáticamente el modo de asignación a MM_ISOTROPIC. Como resultado, una llamada posterior a GetMapMode devolverá MM_ISOTROPIC en lugar de MM_TEXT.

En algunos casos, como sucede con muchos mapas de bits, puede que le interese conservar el diseño de izquierda a derecha. En estos casos, represente la imagen mediante una llamada a BitBlt o StretchBlt y, luego, establezca la marca de control de mapa de bits para dwLayout en LAYOUT_BITMAPORIENTATIONPRESERVED.

Una vez que cambie el diseño con la marca LAYOUT_RTL, las marcas que normalmente especifican la derecha o la izquierda se invierten. Para evitar confusiones, es posible que quiera definir nombres alternativos para las marcas estándar. Para obtener una lista de los nombres de marca alternativos sugeridos, consulte SetLayout en Windows SDK.

CDC::SetMapMode

Establece el modo de asignación.

virtual int SetMapMode(int nMapMode);

Parámetros

nMapMode
Especifica el nuevo modo de asignación. Puede tener cualquiera de los valores siguientes:

  • MM_ANISOTROPIC: las unidades lógicas se convierten en unidades arbitrarias con ejes escalados arbitrariamente. Establecer el modo de asignación en MM_ANISOTROPIC no cambia la ventana actual ni la configuración de la ventanilla. Para cambiar las unidades, la orientación y el escalado, llame a las funciones miembro SetWindowExt y SetViewportExt.

  • MM_HIENGLISH: cada unidad lógica se convierte en 0,001 pulgadas. La x positiva está a la derecha, mientras que la y positiva está arriba.

  • MM_HIMETRIC: cada unidad lógica se convierte en 0,01 milímetros. La x positiva está a la derecha, mientras que la y positiva está arriba.

  • MM_ISOTROPIC: las unidades lógicas se convierten en unidades arbitrarias con ejes con un escalado equivalente; es decir, 1 unidad a lo largo del eje x es igual a 1 unidad a lo largo del eje y. Use las funciones miembro SetWindowExt y SetViewportExt para especificar las unidades deseadas y la orientación de los ejes. GDI realiza ajustes según sea necesario para asegurarse de que las unidades x e y sigan siendo del mismo tamaño.

  • MM_LOENGLISH: cada unidad lógica se convierte en 0,01 pulgadas. La x positiva está a la derecha, mientras que la y positiva está arriba.

  • MM_LOMETRIC: cada unidad lógica se convierte en 0,1 milímetros. La x positiva está a la derecha, mientras que la y positiva está arriba.

  • MM_TEXT: cada unidad lógica se convierte en 1 píxel del dispositivo. La x positiva está a la derecha, mientras que la y positiva está abajo.

  • MM_TWIPS: cada unidad lógica se convierte en 1/20 de un punto. (Dado que un punto es 1/72 de pulgada, un twip es 1/1440 de pulgada). La x positiva está a la derecha; mientras que la y positiva está arriba.

Valor devuelto

El modo de asignación anterior.

Comentarios

El modo de asignación define la unidad de medida usada para convertir unidades lógicas en unidades de dispositivo; también define la orientación de los ejes x e y del dispositivo. GDI usa el modo de asignación para convertir las coordenadas lógicas en las coordenadas de dispositivo adecuadas. El modo MM_TEXT permite que las aplicaciones funcionen en píxeles del dispositivo, donde 1 unidad es igual a 1 píxel. El tamaño físico de un píxel varía de un dispositivo a otro.

Los modos MM_HIENGLISH, MM_HIMETRIC, MM_LOENGLISH, MM_LOMETRIC y MM_TWIPS son útiles para las aplicaciones que deben dibujar en unidades físicamente significativas (como pulgadas o milímetros). El MM_ISOTROPIC modo garantiza una relación de aspecto 1:1, que es útil cuando es importante conservar la forma exacta de una imagen. El modo MM_ANISOTROPIC permite ajustar las coordenadas x e y de forma independiente.

Nota:

Si llama a SetLayout para cambiar el contexto de dispositivo a un diseño de derecha a izquierda, SetLayout cambia automáticamente el modo de asignación a MM_ISOTROPIC.

Ejemplo

Vea el ejemplo de CView::OnPrepareDC.

CDC::SetMapperFlags

Cambia el método usado por el asignador de fuentes cuando convierte una fuente lógica en una fuente física.

DWORD SetMapperFlags(DWORD dwFlag);

Parámetros

dwFlag
Especifica si el asignador de fuentes intenta hacer coincidir el alto y el ancho de aspecto de una fuente con los del dispositivo. Cuando este valor es ASPECT_FILTERING, el asignador selecciona solo las fuentes cuyo aspecto x e y coinciden exactamente con los del dispositivo especificado.

Valor devuelto

El valor anterior de la marca del asignador de fuentes.

Comentarios

Una aplicación puede usar SetMapperFlags para hacer que el asignador de fuentes intente elegir solo una fuente física que coincida exactamente con la relación de aspecto del dispositivo especificado.

Una aplicación que solo usa fuentes de trama puede usar la función SetMapperFlags para asegurarse de que la fuente seleccionada por el asignador de fuentes es atractiva y legible en el dispositivo especificado. Las aplicaciones que usan fuentes escalables (TrueType) normalmente no usan SetMapperFlags.

Si ninguna fuente física tiene una relación de aspecto que coincida con la especificación de la fuente lógica, GDI elige una nueva relación de aspecto y selecciona una fuente que coincida con esta nueva relación de aspecto.

CDC::SetMiterLimit

Establece el límite de la longitud de las uniones angulares para el contexto de dispositivo.

BOOL SetMiterLimit(float fMiterLimit);

Parámetros

fMiterLimit
Especifica el nuevo límite angular para el contexto de dispositivo.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

La longitud del ángulo se define como la distancia desde la intersección de las paredes de la línea en el interior de la unión hasta la intersección de las paredes de la línea en el exterior de la unión. El límite angular es la relación máxima permitida de la longitud del ángulo con el ancho de la línea. El límite angular predeterminado es 10,0.

CDC::SetOutputDC

Llame a esta función miembro para establecer el contexto de dispositivo de salida, m_hDC.

virtual void SetOutputDC(HDC hDC);

Parámetros

hDC
Un contexto de dispositivo de Windows.

Comentarios

Solo se puede llamar a esta función miembro cuando no se ha asociado un contexto de dispositivo al objeto CDC. Esta función miembro establece m_hDC pero no asocia el contexto del dispositivo al CDC objeto .

CDC::SetPixel

Establece el píxel del punto especificado en la aproximación más cercana al color especificado por crColor.

COLORREF SetPixel(
    int x,
    int y,
    COLORREF crColor);

COLORREF SetPixel(
    POINT point,
    COLORREF crColor);

Parámetros

x
Especifica la coordenada x lógica del punto que se va a establecer.

y
Especifica la coordenada y lógica del punto que se va a establecer.

crColor
Valor RGB COLORREF que especifica el color usado para pintar el punto. Consulte COLORREF en Windows SDK para ver una descripción de este valor.

point
Especifica las coordenadas x e y lógicas del punto que se va a establecer. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

Valor RGB del color que se pinta el punto. Este valor puede ser diferente del especificado por crColor si se usa una aproximación de ese color. Si se produce un error en la función (si el punto está fuera de la zona de recorte), el valor devuelto es -1.

Comentarios

El punto debe estar en la zona de recorte. Si el punto no está en la región de recorte, la función no hace nada.

No todos los dispositivos admiten la función SetPixel. Para determinar si un dispositivo admite SetPixel, llame a la función miembro GetDeviceCaps con el índice RASTERCAPS y compruebe el valor devuelto para la marca RC_BITBLT.

CDC::SetPixelV

Establece el píxel de las coordenadas especificadas en la aproximación más cercana al color especificado.

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

BOOL SetPixelV(
    POINT point,
    COLORREF crColor);

Parámetros

x
Especifica la coordenada x, en unidades lógicas, del punto que se va a establecer.

y
Especifica la coordenada y, en unidades lógicas, del punto que se va a establecer.

crColor
Especifica el color que se va a usar para pintar el punto.

point
Especifica las coordenadas x e y lógicas del punto que se va a establecer. Puede pasar una estructura de datos POINT o un objeto CPoint para este parámetro.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El punto debe estar tanto en la zona de recorte como en la parte visible de la superficie del dispositivo. No todos los dispositivos admiten la función miembro. Para obtener más información, consulte la funcionalidad RC_BITBLT en la función miembro CDC::GetDeviceCaps. SetPixelV es más rápido que SetPixel porque no es necesario devolver el valor de color del punto pintado.

CDC::SetPolyFillMode

Establece el modo de relleno de polígono.

int SetPolyFillMode(int nPolyFillMode);

Parámetros

nPolyFillMode
Especifica el nuevo modo de relleno. Este valor puede ser ALTERNATE o WINDING. El modo predeterminado establecido en Windows es ALTERNATE.

Valor devuelto

El modo de relleno anterior, si la operación se realiza correctamente; de lo contrario, 0.

Comentarios

Cuando el modo de relleno de polígono es ALTERNATE, el sistema rellena el área entre los lados del polígono impares y pares en cada línea de barrido. Es decir, el sistema rellena el área entre el primer y el segundo lado, entre el tercer y el cuarto lado, y así sucesivamente. Este modo es la predeterminada.

Cuando el modo de relleno de polígono es WINDING, el sistema usa la dirección en la que se dibuja una figura para determinar si se va a rellenar un área. Cada segmento de línea de un polígono se dibuja en el sentido de las agujas del reloj o en sentido contrario a las agujas del reloj. Cada vez que una línea imaginaria dibujada desde un área cerrada hacia el exterior de una figura pasa por un segmento de línea en el sentido de las agujas del reloj, el recuento aumenta. Cuando la línea pasa por un segmento de línea en sentido contrario a las agujas del reloj, el recuento disminuye. El área se rellena si el recuento es distinto de cero cuando la línea alcanza el exterior de la figura.

CDC::SetROP2

Establece el modo de dibujo actual.

int SetROP2(int nDrawMode);

Parámetros

nDrawMode
Especifica el nuevo modo de dibujo. Puede ser cualquiera de los siguientes valores:

  • R2_BLACK: el píxel siempre es negro.

  • R2_WHITE: el píxel siempre es blanco.

  • R2_NOP: el píxel permanece sin cambiar.

  • R2_NOT: el píxel es el inverso del color de la pantalla.

  • R2_COPYPEN: el píxel es del color del lápiz.

  • R2_NOTCOPYPEN: el píxel es el inverso del color del lápiz.

  • R2_MERGEPENNOT: el píxel es una combinación del color del lápiz y el inverso del color de la pantalla. Píxel final = (~ píxel de pantalla) | lápiz.

  • R2_MASKPENNOT: el píxel es una combinación de los colores comunes del lápiz y del inverso de la pantalla. Píxel final = (~ píxel de pantalla) & lápiz.

  • R2_MERGENOTPEN: el píxel es una combinación del color de la pantalla y el inverso del color del lápiz. Píxel final = (~ lápiz) | píxel de pantalla.

  • R2_MASKNOTPEN: el píxel es una combinación de los colores comunes de la pantalla y del inverso del lápiz. Píxel final = (~ lápiz) & píxel de pantalla.

  • R2_MERGEPEN: el píxel es una combinación del color del lápiz y el color de la pantalla. Píxel final = lápiz | píxel de pantalla.

  • R2_NOTMERGEPEN: el píxel es el inverso del color R2_MERGEPEN. Píxel final = ~ (lápiz | píxel de pantalla).

  • R2_MASKPEN: el píxel es una combinación de los colores comunes del lápiz y la pantalla. Píxel final = lápiz & píxel de pantalla.

  • R2_NOTMASKPEN: el píxel es el inverso del color R2_MASKPEN. Píxel final = ~ (lápiz & píxel de pantalla).

  • R2_XORPEN: el píxel es una combinación de los colores que están en el lápiz o en la pantalla, pero no en ambos. Píxel final = lápiz ^ píxel de pantalla.

  • R2_NOTXORPEN: el píxel es el inverso del color R2_XORPEN. Píxel final = ~ (lápiz ^ píxel de pantalla).

Valor devuelto

El modo de dibujo anterior.

Puede ser cualquiera de los valores que se proporcionan en Windows SDK.

Comentarios

El modo de dibujo especifica la forma en que los colores del lápiz y el interior de los objetos rellenados se combinan con el color que ya está en la superficie de visualización.

El modo de dibujo es solo para dispositivos ráster; no se aplica a los dispositivos vectoriales. Los modos de dibujo son códigos binarios de operación de trama que representan todas las combinaciones booleanas posibles de dos variables, mediante los operadores binarios &, | y ^ (sin incluir |) y la operación unaria ~.

CDC::SetStretchBltMode

Establece el modo de extensión de mapa de bits para la función miembro StretchBlt.

int SetStretchBltMode(int nStretchMode);

Parámetros

nStretchMode
Especifica el modo de extensión. Puede ser cualquiera de los siguientes valores:

Valor Descripción
BLACKONWHITE Realiza una operación & booleana con los valores de color de los píxeles eliminados y existentes. Si el mapa de bits es un mapa de bits monocromático, este modo conserva los píxeles negros a costa de los píxeles blancos.
COLORONCOLOR Elimina los píxeles. Este modo elimina todas las líneas eliminadas de píxeles sin intentar conservar su información.
HALFTONE Asigna píxeles del rectángulo de origen a bloques de píxeles del rectángulo de destino. El color promedio del bloque de destino de píxeles se aproxima al color de los píxeles de origen.
Después de establecer el modo de extensión HALFTONE, una aplicación debe llamar a la función SetBrushOrgEx de Win32 para establecer el origen del pincel. Si no lo hace, se produce una desalineación del pincel.
STRETCH_ANDSCANS Windows 95/98: igual que BLACKONWHITE.
STRETCH_DELETESCANS Windows 95/98: igual que COLORONCOLOR.
STRETCH_HALFTONE Windows 95/98: igual que HALFTONE.
STRETCH_ORSCANS Windows 95/98: igual que WHITEONBLACK.
WHITEONBLACK Realiza una operación | booleana con los valores de color de los píxeles eliminados y existentes. Si el mapa de bits es un mapa de bits monocromático, este modo conserva los píxeles blancos a costa de los píxeles negros.

Valor devuelto

El modo de extensión anterior. Puede ser STRETCH_ANDSCANS, STRETCH_DELETESCANS o STRETCH_ORSCANS.

Comentarios

El modo de extensión de mapa de bits define la manera en que la información se quita de los mapas de bits que se comprimen con la función.

Los modos BLACKONWHITE(STRETCH_ANDSCANS) y WHITEONBLACK(STRETCH_ORSCANS) se usan normalmente para conservar píxeles de primer plano en mapas de bits monocromáticos. El modo COLORONCOLOR(STRETCH_DELETESCANS) se usa normalmente para conservar el color en los mapas de bits de color.

El HALFTONE modo requiere más procesamiento de la imagen de origen que los otros tres modos; es más lento que los demás, pero genera imágenes de mayor calidad. Además, SetBrushOrgEx se debe llamar a después de establecer el HALFTONE modo para evitar la desalineación de pincel.

Es posible que también haya más modos de extensión disponibles en función de las funcionalidades del controlador del dispositivo.

CDC::SetTextAlign

Establece las marcas de alineación de texto.

UINT SetTextAlign(UINT nFlags);

Parámetros

nFlags
Especifica marcas de alineación de texto. Las marcas especifican la relación entre un punto y un rectángulo que rodea el texto. El punto puede ser la posición o coordenadas actuales especificadas por una función de salida de texto. El rectángulo que rodea el texto se define mediante las celdas de caracteres adyacentes de la cadena de texto. El parámetro nFlags puede ser una o varias marcas de las tres categorías siguientes. Elija solo una marca de cada categoría. La primera categoría afecta a la alineación del texto en la dirección x:

  • TA_CENTER: alinea el punto con el centro horizontal del rectángulo delimitador.

  • TA_LEFT: alinea el punto con el lado izquierdo del rectángulo delimitador. Esta es la configuración predeterminada.

  • TA_RIGHT: alinea el punto con el lado derecho del rectángulo delimitador.

La segunda categoría afecta a la alineación del texto en la dirección y:

  • TA_BASELINE: alinea el punto con la línea base de la fuente elegida.

  • TA_BOTTOM: alinea el punto con el lado inferior del rectángulo delimitador.

  • TA_TOP: alinea el punto con el lado superior del rectángulo delimitador. Esta es la configuración predeterminada.

La tercera categoría determina si la posición actual se actualiza cuando se escribe texto:

  • TA_NOUPDATECP No actualiza la posición actual después de cada llamada a una función de salida de texto. Esta es la configuración predeterminada.

  • TA_UPDATECP: actualiza la posición x actual después de cada llamada a una función de salida de texto. La nueva posición está en el lado derecho del rectángulo delimitador del texto. Cuando se establece esta marca, se omiten las coordenadas especificadas en las llamadas a la función miembro TextOut.

Valor devuelto

La configuración anterior de alineación de texto, si se ejecuta correctamente. El byte de orden inferior contiene la configuración horizontal y el byte de orden superior contiene la configuración vertical; de lo contrario, 0.

Comentarios

Las funciones miembro TextOut y ExtTextOut usan estas marcas al colocar una cadena de texto en una pantalla o dispositivo. Las marcas especifican la relación entre un punto específico y un rectángulo que rodea el texto. Las coordenadas de este punto se pasan como parámetros a la función miembro TextOut. El rectángulo que rodea el texto se forma con las celdas de caracteres adyacentes de la cadena de texto.

CDC::SetTextCharacterExtra

Establece la cantidad de espaciado entre caracteres.

int SetTextCharacterExtra(int nCharExtra);

Parámetros

nCharExtra
Especifica la cantidad de espacio adicional (en unidades lógicas) que se va a agregar a cada carácter. Si el modo de asignación actual no MM_TEXTes , nCharExtra se transforma y se redondea al píxel más cercano.

Valor devuelto

La cantidad anterior de espaciado entre caracteres.

Comentarios

GDI agrega este espaciado a cada carácter, incluidos los caracteres de salto, cuando escribe una línea de texto en el contexto de dispositivo. El valor predeterminado de la cantidad de espaciado entre caracteres es 0.

CDC::SetTextColor

Establece el color del texto en el color especificado.

virtual COLORREF SetTextColor(COLORREF crColor);

Parámetros

crColor
Especifica el color del texto como un valor de color RGB.

Valor devuelto

Un valor RGB para el color de texto anterior.

Comentarios

El sistema usa este color de texto al escribir texto en este contexto del dispositivo y también al convertir mapas de bits entre contextos de dispositivo monocromáticos y de color.

Si el dispositivo no puede representar el color especificado, el sistema establece el color del texto en el color físico más cercano. Las funciones miembro SetBkColor y SetBkMode especifican el color de fondo de un carácter.

Ejemplo

Vea el ejemplo de CWnd::OnCtlColor.

CDC::SetTextJustification

Agrega espacio a los caracteres de salto de una cadena.

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

Parámetros

nBreakExtra
Especifica el espacio adicional total que se va a agregar a la línea de texto (en unidades lógicas). Si el modo de asignación actual no MM_TEXTes , el valor proporcionado por este parámetro se convierte en el modo de asignación actual y se redondea a la unidad de dispositivo más cercana.

nBreakCount
Especifica el número de caracteres de salto de la línea.

Valor devuelto

1 si la función se realiza correctamente; de lo contrario, 0.

Comentarios

Una aplicación puede usar las funciones miembro GetTextMetrics para recuperar el carácter de salto de una fuente.

Después de llamar a la función miembro SetTextJustification, una llamada a una función de salida de texto (como TextOut) distribuye el espacio adicional especificado de manera uniforme entre el número especificado de caracteres de salto. El carácter de salto suele ser el carácter de espacio (ASCII 32), pero una fuente podría definirlo como otro carácter.

Normalmente, la función miembro GetTextExtent se usa con SetTextJustification. GetTextExtent calcula el ancho de una línea determinada antes de la alineación. Una aplicación puede determinar cuánto espacio se especificará en el parámetro nBreakExtra. Para ello, resta el valor devuelto por GetTextExtent al ancho de la cadena después de la alineación.

La función SetTextJustification se puede usar para alinear una línea que contiene varias ejecuciones en fuentes diferentes. En este caso, la línea debe crearse por etapas, para lo que cada ejecución se alinea y escribe por separado.

Dado que pueden producirse errores de redondeo durante la alineación, el sistema mantiene un término de error en ejecución que define el error actual. Al alinear una línea que contiene varias ejecuciones, GetTextExtent usa automáticamente este término de error al calcular la extensión de la ejecución siguiente. Esto permite que la función de salida de texto combine el error en la nueva ejecución.

Después de alinear cada línea, este término de error debe borrarse para impedir que se incorpore a la línea siguiente. El término se puede borrar mediante una llamada a SetTextJustification con nBreakExtra establecido en 0.

CDC::SetViewportExt

Establece las extensiones x e y del área de visualización del contexto de dispositivo.

virtual CSize SetViewportExt(
    int cx,
    int cy);

CSize SetViewportExt(SIZE size);

Parámetros

cx
Especifica la extensión x del área de visualización (en unidades de dispositivo).

cy
Especifica la extensión y del área de visualización (en unidades de dispositivo).

size
Especifica las extensiones x e y del área de visualización (en unidades de dispositivo).

Valor devuelto

Las extensiones anteriores del área de visualización como un objeto CSize. Cuando se produce un error, las coordenadas x e y del objeto CSize devuelto se establecen en 0.

Comentarios

El área de visualización, junto con la ventana del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo real. En otras palabras, definen la forma en que GDI convierte las coordenadas lógicas en coordenadas del dispositivo.

Cuando se establecen los siguientes modos de asignación, se omiten las llamadas a SetWindowExt y SetViewportExt:

MM_HIENGLISH MM_LOMETRIC
MM_HIMETRIC MM_TEXT
MM_LOENGLISH MM_TWIPS

Cuando se establece el modo MM_ISOTROPIC, una aplicación debe llamar a la función miembro SetWindowExt antes de llamar a SetViewportExt.

Ejemplo

Vea el ejemplo de CView::OnPrepareDC.

CDC::SetViewportOrg

Establece el origen del área de visualización del contexto de dispositivo.

virtual CPoint SetViewportOrg(
    int x,
    int y);

CPoint SetViewportOrg(POINT point);

Parámetros

x
Especifica la coordenada x (en unidades de dispositivo) del origen del área de visualización. El valor debe estar dentro del intervalo del sistema de coordenadas del dispositivo.

y
Especifica la coordenada y (en unidades de dispositivo) del origen del área de visualización. El valor debe estar dentro del intervalo del sistema de coordenadas del dispositivo.

point
Especifica el origen del área de visualización. Los valores deben estar dentro del intervalo del sistema de coordenadas del dispositivo. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

El origen anterior del área de visualización (en coordenadas del dispositivo) como un objeto CPoint.

Comentarios

El área de visualización, junto con la ventana del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo real. En otras palabras, definen la forma en que GDI convierte las coordenadas lógicas en coordenadas del dispositivo.

El origen del área de visualización marca el punto del sistema de coordenadas del dispositivo al que GDI asigna el origen de la ventana, un punto del sistema de coordenadas lógicas especificado por la función miembro SetWindowOrg. GDI asigna todos los demás puntos siguiendo el mismo proceso requerido para asignar el origen de la ventana al origen del área de visualización. Por ejemplo, todos los puntos de un círculo alrededor del punto del origen de la ventana se dispondrán en un círculo alrededor del punto del origen del área de visualización. Del mismo modo, todos los puntos de una línea que pasa por el origen de la ventana se dispondrán en una línea que pasa por el origen del área de visualización.

Ejemplo

Vea el ejemplo de CView::OnPrepareDC.

CDC::SetWindowExt

Establece las extensiones x e y de la ventana asociada al contexto de dispositivo.

virtual CSize SetWindowExt(
    int cx,
    int cy);

CSize SetWindowExt(SIZE size);

Parámetros

cx
Especifica la extensión x (en unidades lógicas) de la ventana.

cy
Especifica la extensión y (en unidades lógicas) de la ventana.

size
Especifica las extensiones x e y (en unidades lógicas) de la ventana.

Valor devuelto

Las extensiones anteriores de la ventana (en unidades lógicas) como un objeto CSize. Si se produce un error, las coordenadas x e y del objeto CSize devuelto se establecen en 0.

Comentarios

La ventana, junto con el área de visualización del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo.

Cuando se establecen los siguientes modos de asignación, se omiten las llamadas a las funciones SetWindowExt y SetViewportExt:

  • MM_HIENGLISH

  • MM_HIMETRIC

  • MM_LOENGLISH

  • MM_LOMETRIC

  • MM_TEXT

  • MM_TWIPS

Cuando se establece el modo MM_ISOTROPIC, una aplicación debe llamar a la función miembro SetWindowExt antes de llamar a SetViewportExt.

Ejemplo

Vea el ejemplo de CView::OnPrepareDC.

CDC::SetWindowOrg

Establece el origen de la ventana del contexto de dispositivo.

CPoint SetWindowOrg(
    int x,
    int y);

CPoint SetWindowOrg(POINT point);

Parámetros

x
Especifica la coordenada x lógica del nuevo origen de la ventana.

y
Especifica la coordenada y lógica del nuevo origen de la ventana.

point
Especifica las coordenadas lógicas del nuevo origen de la ventana. Puede pasar una estructura POINT o un objeto CPoint para este parámetro.

Valor devuelto

El origen anterior de la ventana como un objeto CPoint.

Comentarios

La ventana, junto con el área de visualización del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo.

El origen de la ventana marca el punto del sistema de coordenadas lógicas desde el que GDI asigna el origen del área de visualización, un punto del sistema de coordenadas del dispositivo especificado por la función SetWindowOrg. GDI asigna todos los demás puntos siguiendo el mismo proceso requerido para asignar el origen de la ventana al origen del área de visualización. Por ejemplo, todos los puntos de un círculo alrededor del punto del origen de la ventana se dispondrán en un círculo alrededor del punto del origen del área de visualización. Del mismo modo, todos los puntos de una línea que pasa por el origen de la ventana se dispondrán en una línea que pasa por el origen del área de visualización.

CDC::SetWorldTransform

Establece una transformación lineal bidimensional entre el espacio global y el espacio de página para el contexto de dispositivo especificado. Esta transformación se puede usar para escalar, rotar, distorsionar o traducir la salida de gráficos.

BOOL SetWorldTransform(const XFORM& rXform);

Parámetros

rXform
Referencia a una estructura XFORM que contiene los datos de transformación.

Valor devuelto

Devuelve un valor distinto de cero si se ejecuta correctamente.

Devuelve 0 en caso de error.

Para obtener información de errores extendida, realice una llamada a GetLastError.

Comentarios

Este método encapsula la función GDI de Windows SetWorldTransform.

CDC::StartDoc

Indica al controlador del dispositivo que se está iniciando un nuevo trabajo de impresión y que todas las llamadas posteriores a StartPage y EndPage se deben poner en cola en el mismo trabajo hasta que se produzca una llamada a EndDoc.

int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);

Parámetros

lpDocInfo
Apunta a una estructura DOCINFO que contiene el nombre del archivo de documento y el nombre del archivo de salida.

lpszDocName
Puntero a una cadena que contiene el nombre del archivo de documento.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es mayor que cero. Este valor es el identificador del trabajo de impresión del documento.

Si se produce un error en la función, el valor devuelto es menor o igual que cero.

Comentarios

Esto garantiza que los documentos de más de una página no se intercalan con otros trabajos.

Para Windows 3.1 y versiones posteriores, esta función reemplaza el escape de impresora STARTDOC. El uso de esta función garantiza que los documentos que contienen más de una página no se intercalan con otros trabajos de impresión.

StartDoc no debe usarse dentro de los metarchivos.

Ejemplo

Este fragmento de código obtiene la impresora predeterminada, abre un trabajo de impresión y pone en cola una página que contiene "Hello, World!". Dado que el texto que imprime este código no se escala a las unidades lógicas de la impresora, el texto de salida podría mostrarse en letras tan pequeñas que el resultado es ilegible. Las funciones de escalado de CDC, como SetMapMode, SetViewportOrg y SetWindowExt, se pueden usar para corregir el escalado.

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

Llame a esta función miembro para preparar el controlador de impresora para recibir datos.

int StartPage();

Valor devuelto

Mayor o igual que 0 si la función se realiza correctamente, o un valor negativo si se ha producido un error.

Comentarios

StartPage reemplaza los escapes NEWFRAME y BANDINFO.

Para obtener información general sobre la secuencia de llamadas de impresión, consulte la función miembro StartDoc.

El sistema deshabilita la función miembro ResetDC entre las llamadas a StartPage y EndPage.

Ejemplo

Vea el ejemplo de CDC::StartDoc.

CDC::StretchBlt

Copia un mapa de bits de un rectángulo de origen en un rectángulo de destino, estirando o comprimiendo el mapa de bits si es necesario para ajustarse a las dimensiones del rectángulo de destino.

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

Parámetros

x
Especifica la coordenada X (en unidades lógicas) de la esquina superior izquierda del rectángulo de destino.

y
Especifica la coordenada Y (en unidades lógicas) de la esquina superior izquierda del rectángulo de destino.

nWidth
Especifica el ancho (en unidades lógicas) del rectángulo de destino.

nHeight
Especifica el alto (en unidades lógicas) del rectángulo de destino.

pSrcDC
Especifica el contexto de dispositivo de origen.

xSrc
Especifica la coordenada X (en unidades lógicas) de la esquina superior izquierda del rectángulo de origen.

ySrc
Especifica la coordenada Y (en unidades lógicas) de la esquina superior izquierda del rectángulo de origen.

nSrcWidth
Especifica el ancho (en unidades lógicas) del rectángulo de origen.

nSrcHeight
Especifica el alto (en unidades lógicas) del rectángulo de origen.

dwRop
Especifica la operación de trama que se va a realizar. Los códigos de operación de trama definen cómo combina GDI los colores en las operaciones de salida que implican un pincel actual, un posible mapa de bits de origen y un mapa de bits de destino. Este parámetro puede tener uno de los valores siguientes:

  • BLACKNESS: pone en negro toda la salida.

  • DSTINVERT: invierte el mapa de bits de destino.

  • MERGECOPY: combina el patrón y el mapa de bits de origen mediante el operador AND booleano.

  • MERGEPAINT: combina el mapa de bits de origen invertido con el mapa de bits de destino mediante el operador OR booleano.

  • NOTSRCCOPY: copia el mapa de bits de origen invertido en el destino.

  • NOTSRCERASE: invierte el resultado de combinar los mapas de bits de origen y de destino mediante el operador OR booleano.

  • PATCOPY: copia el patrón en el mapa de bits de destino.

  • PATINVERT: combina el mapa de bits de destino con el patrón mediante el operador XOR booleano.

  • PATPAINT: combina el mapa de bits de origen invertido con el patrón mediante el operador OR booleano. Combina el resultado de esta operación con el mapa de bits de destino mediante el operador OR booleano.

  • SRCAND: combina píxeles de los mapas de bits de destino y de origen mediante el operador AND booleano.

  • SRCCOPY: copia el mapa de bits de origen en el mapa de bits de destino.

  • SRCERASE: invierte el mapa de bits de destino y combina el resultado con el mapa de bits de origen mediante el operador AND booleano.

  • SRCINVERT: combina píxeles de los mapas de bits de destino y de origen mediante el operador XOR booleano.

  • SRCPAINT: combina píxeles de los mapas de bits de destino y de origen mediante el operador OR booleano.

  • WHITENESS: pone en blanco toda la salida.

Valor devuelto

Es distinto de cero si se dibuja el mapa de bits; de lo contrario, es 0.

Comentarios

La función emplea el modo de ajuste del contexto de dispositivo de destino (establecido por SetStretchBltMode) para determinar cómo estirar o comprimir el mapa de bits.

La función StretchBlt mueve el mapa de bits del dispositivo de origen especificado por pSrcDC al dispositivo de destino representado por el objeto de contexto de dispositivo a cuya función miembro se llama. Los parámetros xSrc, ySrc, nSrcWidth y nSrcHeight definen la esquina superior izquierda y las dimensiones del rectángulo de origen. Los parámetros x, y, nWidth y nHeight proporcionan la esquina superior izquierda y las dimensiones del rectángulo de destino. La operación de trama especificada por dwRop define cómo se combinan el mapa de bits de origen y los bits que ya están presentes en el dispositivo de destino.

La función StretchBlt crea una imagen reflejada de un mapa de bits si los signos de los parámetros nSrcWidth y nWidth o nSrcHeight y nHeight son distintos. Si nSrcWidth y nWidth tienen signos diferentes, la función crea una imagen reflejada del mapa de bits a lo largo del eje x. Si nSrcHeight y nHeight tienen signos diferentes, la función crea una imagen reflejada del mapa de bits a lo largo del eje y.

La función StretchBlt estira o comprime el mapa de bits de origen en memoria y después copia el resultado al destino. Si se va a combinar un patrón con el resultado, no se combina hasta que el mapa de bits de origen extendido se copia en el destino. Si se usa un pincel, es el pincel seleccionado en el contexto del dispositivo de destino. Las coordenadas de destino se transforman según el contexto de dispositivo de destino; las coordenadas de origen se transforman según el contexto de dispositivo de origen.

Si los mapas de bits de destino, origen y patrón no tienen el mismo formato de color, StretchBlt convierte los mapas de bits de origen y patrón para que coincidan con los mapas de bits de destino. En la conversión se usan los colores de primer plano y de fondo del contexto de dispositivo de destino.

Si StretchBlt debe convertir un mapa de bits monocromo a color, establece los bits blancos (1) al color de fondo y los bits negros (0) al color de primer plano. Para convertir de color a monocromo, establece en blanco (1) los píxeles que coinciden con el color de fondo y establece en negro (0) todos los demás píxeles. Se usan los colores de primer plano y de fondo del contexto de dispositivo con color.

No todos los dispositivos admiten la función StretchBlt. Para determinar si un dispositivo admite StretchBlt, llame a la función miembro GetDeviceCaps con el índice RASTERCAPS y compruebe el valor devuelto para la marca RC_STRETCHBLT.

CDC::StrokeAndFillPath

Cierra cualquier figura abierta de un trazado, traza el contorno del trazado con el lápiz actual y rellena su interior con el pincel actual.

BOOL StrokeAndFillPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El contexto de dispositivo debe contener un trazado cerrado. La StrokeAndFillPath función miembro tiene el mismo efecto que cerrar todas las figuras abiertas en la ruta de acceso, y estromar y rellenar la ruta de acceso por separado, excepto que la región rellenada no se superponerá a la región trazos incluso si el lápiz es ancho.

CDC::StrokePath

Representa el trazado especificado con el lápiz actual.

BOOL StrokePath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

El contexto de dispositivo debe contener un trazado cerrado.

CDC::TabbedTextOut

Llame a esta función miembro para escribir una cadena de caracteres en la ubicación especificada y expandir las tabulaciones hasta los valores especificados en la matriz de posiciones de tabulación.

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);

Parámetros

x
Especifica la coordenada x lógica del punto inicial de la cadena.

y
Especifica la coordenada y lógica del punto inicial de la cadena.

lpszString
Apunta a la cadena de caracteres que se va a dibujar. Puede pasar un puntero a una matriz de caracteres o a un objeto CString para este parámetro.

nCount
Especifica la longitud de la cadena a la que apunta lpszString.

nTabPositions
Especifica el número de valores de la matriz de posiciones de tabulación.

lpnTabStopPositions
Apunta a una matriz que contienen las posiciones de tabulación (en unidades lógicas). Las tabulaciones deben ordenarse en orden creciente; el valor x más pequeño debe ser el primer elemento de la matriz.

nTabOrigin
Especifica la coordenada x de la posición inicial desde la que se expanden las tabulaciones (en unidades lógicas).

str
Objeto CString que contiene los caracteres especificados.

Valor devuelto

Las dimensiones de la cadena (en unidades lógicas) como un objeto CSize.

Comentarios

El texto se escribe en la fuente seleccionada actualmente. Si nTabPositions es 0 y lpnTabStopPositions es NULL, las tabulaciones se expanden ocho veces el ancho de carácter medio.

Si nTabPositions es 1, las tabulaciones se separan con la distancia especificada por el primer valor de la matriz lpnTabStopPositions. Si la matriz lpnTabStopPositions contiene más de un valor, se establece una tabulación para cada valor de la matriz, hasta el número especificado por nTabPositions. El parámetro nTabOrigin permite que una aplicación llame a la función TabbedTextOut varias veces para una sola línea. Si la aplicación llama a la función más de una vez con el parámetro nTabOrigin establecido en el mismo valor de cada vez, la función expande todas las tabulaciones relativas a la posición especificada por nTabOrigin.

De forma predeterminada, la función no usa ni actualiza la posición actual. Si una aplicación necesita actualizar la posición actual cuando llama a la función, la aplicación puede llamar a la función miembro SetTextAlign con nFlags establecido en TA_UPDATECP. Cuando se establece esta marca, Windows omite los parámetros x e y en las llamadas posteriores a TabbedTextOut, y usa la posición actual en su lugar.

CDC::TextOut

Escribe una cadena de caracteres en la ubicación especificada usando la fuente seleccionada actualmente.

virtual BOOL TextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount);

BOOL TextOut(
    int x,
    int y,
    const CString& str);

Parámetros

x
Especifica la coordenada X lógica del punto inicial del texto.

y
Especifica la coordenada Y lógica del punto inicial del texto.

lpszString
Apunta a la cadena de caracteres que se va a dibujar.

nCount
Especifica el número de caracteres de la cadena.

str
Objeto CString que contiene los caracteres que se van a dibujar.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Los orígenes de los caracteres están en la esquina superior izquierda de la celda de caracteres. De forma predeterminada, la función no usa ni actualiza la posición actual.

Si una aplicación necesita actualizar la posición actual cuando llama a TextOut, la aplicación puede llamar a la función miembro SetTextAlign con nFlags establecido en TA_UPDATECP. Cuando se establece esta marca, Windows omite los parámetros x e y en las llamadas posteriores a TextOut, y usa la posición actual en su lugar.

Ejemplo

Vea el ejemplo de CDC::BeginPath.

CDC::TransparentBlt

Llame a esta función miembro para transferir un bloque de bits de los datos de color, que se corresponde con un rectángulo de píxeles desde el contexto de dispositivo de origen especificado hasta un contexto de dispositivo de destino.

BOOL TransparentBlt(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT clrTransparent);

Parámetros

xDest
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.

yDest
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.

nDestWidth
Especifica el ancho, en unidades lógicas, del rectángulo de destino.

nDestHeight
Especifica el alto, en unidades lógicas, del rectángulo de destino.

pSrcDC
Puntero al contexto de dispositivo de origen.

xSrc
Especifica la coordenada x en unidades lógicas del rectángulo de origen.

ySrc
Especifica la coordenada y en unidades lógicas del rectángulo de origen.

nSrcWidth
Especifica el ancho, en unidades lógicas, del rectángulo de origen.

nSrcHeight
Especifica el alto, en unidades lógicas, del rectángulo de origen.

clrTransparent
Color RGB del mapa de bits de origen que se va a tratar como transparente.

Valor devuelto

TRUE si es correcto; de lo contrario, FALSE.

Comentarios

TransparentBlt permite la transparencia; es decir, el color RGB indicado por clrTransparent se representa como transparente para la transferencia.

Para más información, consulte TransparentBlt en Windows SDK.

CDC::UpdateColors

Actualiza el área cliente del contexto de dispositivo, para lo que hace coincidir los colores actuales del área cliente con la paleta del sistema píxel a píxel.

void UpdateColors();

Comentarios

Una ventana inactiva con una paleta lógica implementada puede llamar a UpdateColors como alternativa para volver a dibujar su área cliente cuando cambia la paleta del sistema.

Para obtener más información sobre el uso de paletas de colores, consulte UpdateColors en Windows SDK.

La función miembro UpdateColors normalmente actualiza un área cliente más rápido que si se vuelve a dibujar el área. Aun así, dado que la función realiza la traducción de colores en función del color de cada píxel antes de cambiar la paleta del sistema, cada llamada a esta función produce la pérdida de cierta precisión del color.

CDC::WidenPath

Redefine el trazado actual como el área que se pintaría si dicho trazado se trazase con el lápiz seleccionado actualmente en el contexto de dispositivo.

BOOL WidenPath();

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

Esta función solo se realiza correctamente si el lápiz actual es un lápiz geométrico creado por la segunda versión de la función miembro CreatePen, o si el lápiz se crea con la primera versión de CreatePen y tiene un ancho (en unidades de dispositivo) de más de 1. El contexto de dispositivo debe contener un trazado cerrado. Las curvas Bézier del trazado se convierten en secuencias de líneas rectas que se aproximan a las curvas ampliadas. Por lo tanto, no quedan curvas Bézier en el trazado después de llamar a WidenPath.

Consulte también

CObject (clase)
Gráfico de jerarquías
CPaintDC (clase)
CWindowDC (clase)
CClientDC (clase)
CMetaFileDC (clase)