Clase CGdiObject

Proporciona una clase base para diferentes clases de objetos de la interfaz de dispositivo gráfico (GDI) de Windows, tales como mapas de bits, regiones, pinceles, lápices, tablas y fuentes.

Sintaxis

class CGdiObject : public CObject

Miembros

Constructores públicos

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

Métodos públicos

Nombre Descripción
CGdiObject::Attach Este método se usa para asociar un objeto GDI de Windows con un objeto CGdiObject.
CGdiObject::CreateStockObject Este método se usa para recuperar un manipulador de uno de los lápices, los pinceles o las fuentes predefinidas de Windows.
CGdiObject::DeleteObject Este método se usa para eliminar el objeto GDI de Windows que se haya asociado con el objeto CGdiObject de la memoria y, por tanto, liberar todo el almacenamiento del sistema que esté asociado con este objeto.
CGdiObject::DeleteTempMap Este método se usa para eliminar los objetos temporales CGdiObject que se hayan creado mediante el uso del método FromHandle.
CGdiObject::Detach Este método se usa para desasociar un objeto GDI de Windows de un objeto CGdiObject, así como para obtener un manipulador de ese objeto GDI de Windows.
CGdiObject::FromHandle Este método se usa para devolver un puntero que apunta a un objeto CGdiObject si se especifica el manipulador de un objeto GDI de Windows.
CGdiObject::GetObject Este método se usa para rellenar un búfer con datos que se usan para describir el objeto GDI de Windows que se asoció con el objeto CGdiObject.
CGdiObject::GetObjectType Este método se usa para recuperar el tipo del objeto GDI en cuestión.
CGdiObject::GetSafeHandle Al usar este método, se obtiene el objeto m_hObject a menos que el objeto actual (this) sea NULL; en ese caso, se devolverá el valor NULL.
CGdiObject::UnrealizeObject Este método se usa para restablecer el origen de un pincel o restablecer una paleta lógica.

Operadores públicos

Nombre Descripción
CGdiObject::operator != Este operador se usa para determinar si dos objetos GDI no son lógicamente iguales.
CGdiObject::operator == Este operador se usa para determinar si dos objetos GDI son lógicamente iguales.
CGdiObject::operator HGDIOBJ Este operador se usa para recuperar un manipulador (HANDLE) para el objeto GDI de Windows que se asoció.

Miembros de datos públicos

Nombre Descripción
CGdiObject::m_hObject En este manipulador (HANDLE) se incluyen los datos que se corresponden con los elementos HBITMAP, HPALETTE, HRGN, HBRUSH, HPEN o HFONT que se hayan asociado con el objeto actual.

Comentarios

CGdiObject nunca se crea directamente. En su lugar, cree un objeto a partir de una de sus clases derivadas, como CPen o CBrush.

Para más información sobre la clase CGdiObject, consulte Objetos gráficos.

Jerarquía de herencia

CObject

CGdiObject

Requisitos

Encabezado: afxwin.h

CGdiObject::Attach

Este método se usa para asociar un objeto GDI de Windows con un objeto CGdiObject.

BOOL Attach(HGDIOBJ hObject);

Parámetros

hObject
El valor de este parámetro se corresponde con un manipulador (HANDLE) de un objeto GDI de Windows (por ejemplo: HPEN o HBRUSH).

Valor devuelto

Es valor devuelto de este método será distinto de cero si los elementos se asocian correctamente; de lo contrario será 0.

CGdiObject::CGdiObject

Construye un objeto CGdiObject.

CGdiObject();

Comentarios

CGdiObject nunca se crea directamente. En su lugar, cree un objeto a partir de una de sus clases derivadas, como CPen o Cbrush.

CGdiObject::CreateStockObject

Este método se usa para recuperar un manipulador para uno de los lápices, los pinceles o las fuentes GDI de Windows estándar predefinidas, así como para asociar el objeto GDI con el objeto CGdiObject.

BOOL CreateStockObject(int nIndex);

Parámetros

nIndex
El valor de este parámetro se corresponde con una constante que se usa para especificar el tipo de objeto estándar que quiere usarse. Para obtener una descripción de los valores adecuados, consulte el parámetro fnObject de la función GetStockObject en Windows SDK.

Valor devuelto

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

Comentarios

Llame a esta función con una de las clases derivadas que se corresponda con el tipo de objeto GDI de Windows, como CPen para un lápiz de stock.

CGdiObject::DeleteObject

Este método se usa para eliminar de la memoria el objeto GDI de Windows que se haya asociado y, por tanto, para liberar todo el almacenamiento del sistema que esté asociado con este objeto.

BOOL DeleteObject();

Valor devuelto

El valor devuelto será distinto de cero si el objeto GDI se eliminó correctamente; de lo contrario, será 0.

Comentarios

El almacenamiento que esté asociado con el objeto CGdiObject no sufrirá los efectos de esta llamada. En una aplicación, no debe llamarse al método DeleteObject sobre un objeto CGdiObject que esté seleccionado actualmente en un contexto de dispositivo.

Cuando se elimine un pincel de patrón, no se eliminará el mapa de bits que esté asociado con este. Este mapa de bits deberá eliminarse de forma independiente.

CGdiObject::DeleteTempMap

Se llama automáticamente a esta clase desde el controlador de tiempo de inactividad CWinApp. El métodoDeleteTempMap se usa para eliminar cualquier objeto CGdiObject temporal que se haya creado mediante el método FromHandle.

static void PASCAL DeleteTempMap();

Comentarios

Al usar el método DeleteTempMap, se desasociará el objeto GDI de Windows que estaba asociado con un objeto CGdiObject temporal antes de que se elimine el objeto CGdiObject.

Ejemplo

// DeleteTempMap() is a static member and so does not need to
// be called within the scope of an instantiated CGdiObject object.
CGdiObject::DeleteTempMap();

CGdiObject::Detach

Este método se usa para desasociar un objeto GDI de Windows de un objeto CGdiObject, así como para obtener un manipulador de ese objeto GDI de Windows.

HGDIOBJ Detach();

Valor devuelto

El valor devuelto se corresponderá con un manipulador (HANDLE) para el objeto GDI de Windows que se desasocie; de lo contrario, si no hay ningún objeto GDI asociado, se devolverá el valor NULL.

CGdiObject::FromHandle

Este método se usa para devolver un puntero que apunta a un objeto CGdiObject si se especifica el manipulador de un objeto GDI de Windows.

static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);

Parámetros

hObject
El valor de este parámetro se corresponde con un manipulador (HANDLE) de un objeto GDI de Windows.

Valor devuelto

Un puntero a CGdiObject que podría ser temporal o permanente.

Comentarios

Si todavía no se ha asociado un objeto CGdiObject con el objeto GDI de Windows, se creará y asociará un objeto CGdiObject temporal.

Este objeto CGdiObject temporal solo será válido hasta la próxima vez que haya tiempo de inactividad en el bucle de eventos de la aplicación. En ese momento, se eliminarán todos los objetos gráficos temporales. Es decir, el objeto temporal solo será válido mientras se procesa un mensaje de ventana.

CGdiObject::GetObject

Este método se usa para rellenar un búfer con datos que se usan para definir un objeto que se especifica.

int GetObject(
    int nCount,
    LPVOID lpObject) const;

Parámetros

nCount
El valor de este parámetro se usa para especificar el número de bytes que deben copiarse en el búfer del parámetro lpObject.

lpObject
El valor de este parámetro se usa para apuntar a un búfer proporcionado por el usuario donde va a recibirse la información.

Valor devuelto

El valor devuelto se corresponderá con el número de bytes que se recuperen; de lo contrario, si se produce un error, será 0.

Comentarios

Al usar este método, se recupera una estructura de datos cuyo tipo depende del tipo de objeto gráfico, tal y como se muestra en la lista siguiente:

Object Tipo de búfer
CPen LOGPEN
CBrush LOGBRUSH
CFont LOGFONT
CBitmap BITMAP
CPalette WORD
CRgn No compatible

Si el objeto es un objeto CBitmap, solo se devolverá la información de formato sobre el ancho, el alto y el color del mapa de bits al usar el método GetObject. Los bits reales se pueden recuperar mediante el método CBitmap::GetBitmapBits.

Si el objeto es un objeto CPalette, solo se recuperará un búfer de tipo WORD al usar el método GetObject, donde se especificará el número de entradas de la paleta. Al usar esta función, no se recuperará la estructura LOGPALETTE donde se define la paleta. En una aplicación, se puede obtener información sobre las entradas de paleta mediante una llamada al método CPalette::GetPaletteEntries.

CGdiObject::GetObjectType

Este método se usa para recuperar el tipo del objeto GDI en cuestión.

UINT GetObjectType() const;

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto se corresponderá con el tipo del objeto; de lo contrario, será 0. El valor puede ser uno de los siguientes:

  • OBJ_BITMAP (un mapa de bits)

  • OBJ_BRUSH (un pincel)

  • OBJ_FONT (una fuente)

  • OBJ_PAL (una paleta)

  • OBJ_PEN (un lápiz)

  • OBJ_EXTPEN (un lápiz extendido)

  • OBJ_REGION (una región)

  • OBJ_DC (un contexto de dispositivo)

  • OBJ_MEMDC (un contexto de dispositivo de memoria)

  • OBJ_METAFILE (un metarchivo)

  • OBJ_METADC (un contexto de dispositivo de metarchivo)

  • OBJ_ENHMETAFILE (un metarchivo mejorado)

  • OBJ_ENHMETADC (un contexto de dispositivo de metarchivo mejorado)

CGdiObject::GetSafeHandle

Al usar este método, se obtiene el objeto m_hObject a menos que el objeto actual (this) sea NULL; en ese caso, se devolverá el valor NULL.

HGDIOBJ GetSafeHandle() const;

Valor devuelto

El valor devuelto será un manipulador (HANDLE) del objeto GDI de Windows que esté adjunto; de lo contrario, si no hay ningún objeto adjunto, el valor será NULL.

Comentarios

Este método forma parte del paradigma de interfaz de manipuladores general y resulta útil en casos en los que el valor NULL constituye un valor válido o especial para un manipulador.

Ejemplo

Consulte el ejemplo de la clase CWnd::IsWindowEnabled.

CGdiObject::m_hObject

En este manipulador (HANDLE) se incluyen los datos que se corresponden con los elementos HBITMAP, HPALETTE, HRGN, HBRUSH, HPEN o HFONT que se hayan asociado con el objeto actual.

HGDIOBJ m_hObject;

CGdiObject::operator !=

Este operador se usa para determinar si dos objetos GDI no son lógicamente iguales.

BOOL operator!=(const CGdiObject& obj) const;

Parámetros

obj
El valor de este parámetro se corresponde con un puntero que apunta a un objeto CGdiObject existente.

Comentarios

Este operador se usa para determinar si el objeto GDI del lado izquierdo equivale al objeto GDI del lado derecho.

CGdiObject::operator ==

Este operador se usa para determinar si dos objetos GDI son lógicamente iguales.

BOOL operator==(const CGdiObject& obj) const;

Parámetros

obj
El valor de este parámetro se corresponde con una referencia a un objeto CGdiObject existente.

Comentarios

Este operador se usa para determinar si el objeto GDI del lado izquierdo equivale al objeto GDI del lado derecho.

CGdiObject::operator HGDIOBJ

Este operador se usa para recuperar un manipulador (HANDLE) del objeto GDI de Windows que esté adjunto; de lo contrario, si no hay ningún objeto adjunto, el valor será NULL.

operator HGDIOBJ() const;

CGdiObject::UnrealizeObject

Este método se usa para restablecer el origen de un pincel o restablecer una paleta lógica.

BOOL UnrealizeObject();

Valor devuelto

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

Comentarios

Aunque el método UnrealizeObject constituye una de las funciones miembro de la clase CGdiObject, esta solo se deberá invocar en sobre objetos de tipo CBrush o CPalette.

En el caso de los objetos de tipo CBrush, el uso del método UnrealizeObject le permitirá hacer que, en el sistema, se restablezca el origen de un pincel determinado la siguiente vez que este se seleccione en un contexto de dispositivo. Si el objeto es un objeto CPalette, el uso del método UnrealizeObject le permitirá hacer que, en el sistema, se la paleta se realice como si no se hubiera hecho anteriormente. La próxima vez que se llame a la función CDC::RealizePalette en la aplicación en relación con la paleta que se especifique, el sistema reasignará completamente la paleta lógica con la paleta del sistema.

La función UnrealizeObject no debe usarse con objetos estándar. Se deberá llamar a la función UnrealizeObject cada vez que se establezca un nuevo origen de pincel (mediante la función CDC::SetBrushOrg). No se deberá llamar a la función UnrealizeObject en relación con el pincel o la paleta que estén seleccionadas actualmente en cualquier contexto de presentación.

Consulte también

Gráfico de jerarquías
CBitmap (clase)
CBrush (clase)
CFont (clase)
CPalette (clase)
CPen (clase)
CRgn (clase)