Estructura SURFOBJ (winddi.h)
La estructura SURFOBJ es el objeto de usuario de una superficie. Normalmente, un controlador de dispositivo llama a métodos en un objeto surface solo cuando el objeto surface representa un mapa de bits GDI o una superficie administrada por el dispositivo.
Sintaxis
typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV private_dhpdev;
HDEV private_hdev;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
Miembros
dhsurf
Identificador de una superficie, siempre que la superficie esté administrada por el dispositivo. De lo contrario, este miembro es cero.
hsurf
Identificador de la superficie.
private_dhpdev
private_hdev
dhpdev
Identifica el PDEV del dispositivo asociado a la superficie especificada.
hdev
Identificador lógico de GDI para el PDEV asociado a este dispositivo.
sizlBitmap
Especifica una estructura SIZEL que contiene el ancho y alto, en píxeles, de la superficie. La estructura SIZEL es idéntica a la estructura SIZE .
cjBits
Especifica el tamaño del búfer al que apunta pvBits.
pvBits
Si la superficie es un mapa de bits de formato estándar, se trata de un puntero a los píxeles de la superficie. Para BMF_JPEG o BMF_PNG imágenes, se trata de un puntero a un búfer que contiene los datos de imagen en un formato JPEG o PNG. De lo contrario, este miembro es NULL.
pvScan0
Puntero a la primera línea de examen del mapa de bits. Si iBitmapFormat es BMF_JPEG o BMF_PNG, este miembro es NULL.
lDelta
Especifica el recuento de bytes necesarios para bajar una línea de examen en el mapa de bits. Si iBitmapFormat es BMF_JPEG o BMF_PNG, este miembro es NULL.
iUniq
Especifica el estado actual de la superficie especificada. Cada vez que cambia la superficie, este valor se incrementa. Esto permite a los controladores almacenar en caché las superficies de origen.
Para una superficie que no se debe almacenar en caché, iUniq se establece en cero. Este valor se usa junto con la marca BMF_DONTCACHE de fjBitmap.
iBitmapFormat
Especifica el formato estándar que coincide más estrechamente con esta superficie. Si el miembro iType especifica un mapa de bits (STYPE_BITMAP), este miembro especifica su formato. Los sistemas operativos basados en NT admiten un conjunto de formatos predefinidos, aunque las aplicaciones también pueden enviar formatos específicos del dispositivo mediante SetDIBitsToDevice. Entre los formatos predefinidos admitidos se incluyen los siguientes:
Valor | Significado |
---|---|
BMF_1BPP | 1 bit por píxel. |
BMF_4BPP | 4 bits por píxel. |
BMF_8BPP | 8 bits por píxel. |
BMF_16BPP | 16 bits por píxel. |
BMF_24BPP | 24 bits por píxel. |
BMF_32BPP | 32 bits por píxel. |
BMF_4RLE | 4 bits por píxel, longitud de ejecución codificada. |
BMF_8RLE | 8 bits por píxel, longitud de ejecución codificada. |
BMF_JPEG | Imagen comprimida JPEG. |
BMF_PNG | Imagen comprimida png. |
iType
Tipo de superficie, que es uno de los siguientes:
Tipo | Definición |
---|---|
STYPE_BITMAP | La superficie es un mapa de bits. |
STYPE_DEVBITMAP | La superficie es un mapa de bits de formato de dispositivo. |
STYPE_DEVICE | El dispositivo administra la superficie. |
fjBitmap
Si la superficie es de tipo STYPE_BITMAP y es un mapa de bits de formato sin comprimir estándar, se pueden establecer las marcas siguientes. De lo contrario, se debe omitir este miembro.
Valor | Significado |
---|---|
BMF_DONTCACHE | El controlador no debe almacenar en caché el mapa de bits porque es un mapa de bits transitorio, creado por GDI, que el controlador nunca volverá a ver. Si se establece esta marca, el miembro iUniq de esta estructura se establecerá en 0. |
BMF_KMSECTION | Solo se usa en GDI y el controlador debe omitirlo. |
BMF_NOTSYSMEM | El mapa de bits no está en la memoria del sistema. EngModifySurface establece esta marca cuando mueve un mapa de bits a la memoria de vídeo. |
BMF_NOZEROINIT | El mapa de bits no se inicializó en cero. |
BMF_TOPDOWN | La primera línea de examen representa la parte superior del mapa de bits. |
BMF_WINDOW_BLT | GDI establece esta marca para notificar al controlador de una ventana moverse de una ubicación de pantalla a otra. |
Comentarios
Cuando un controlador necesita información sobre una superficie determinada, el controlador debe tener acceso al SURFOBJ. Esta estructura permite el acceso rápido a las propiedades de la superficie.
Cuando una estructura SURFOBJ representa un mapa de bits GDI, el controlador debe ser capaz de determinar el formato del mapa de bits y localizar los bits de mapa de bits.
Cuando una estructura SURFOBJ representa una superficie de dispositivo, el controlador debe poder localizar el identificador del dispositivo para la superficie.
Para obtener más información sobre cómo admitir imágenes comprimidas JPEG y PNG, consulte DEVINFO.
Requisitos
Requisito | Valor |
---|---|
Header | winddi.h (incluya Winddi.h) |