Struttura SURFOBJ (winddi.h)
La struttura SURFOBJ è l'oggetto utente per una superficie. Un driver di dispositivo chiama in genere metodi su un oggetto superficie solo quando l'oggetto superficie rappresenta una bitmap GDI o una superficie gestita dal dispositivo.
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;
dhsurf
Gestire in una superficie, a condizione che la superficie sia gestita dal dispositivo. In caso contrario, questo membro è zero.
hsurf
Handle sulla superficie.
private_dhpdev
private_hdev
dhpdev
Identifica il PDEV del dispositivo associato alla superficie specificata.
hdev
Handle logico di GDI per il PDEV associato a questo dispositivo.
sizlBitmap
Specifica una struttura SIZEL che contiene la larghezza e l'altezza, in pixel, della superficie. La struttura SIZEL è identica alla struttura SIZE .
cjBits
Specifica le dimensioni del buffer a cui puntano i pvBit.
pvBits
Se la superficie è una bitmap di formato standard, si tratta di un puntatore ai pixel della superficie. Per BMF_JPEG o BMF_PNG immagini, si tratta di un puntatore a un buffer contenente i dati dell'immagine in formato JPEG o PNG. In caso contrario, questo membro è NULL.
pvScan0
Puntatore alla prima riga di analisi della bitmap. Se iBitmapFormat è BMF_JPEG o BMF_PNG, questo membro è NULL.
lDelta
Specifica il numero di byte necessari per spostare verso il basso una riga di analisi nella bitmap. Se iBitmapFormat è BMF_JPEG o BMF_PNG, questo membro è NULL.
iUniq
Specifica lo stato corrente della superficie specificata. Ogni volta che la superficie cambia, questo valore viene incrementato. Ciò consente ai driver di memorizzare nella cache le superfici di origine.
Per una superficie che non deve essere memorizzata nella cache, iUniq è impostato su zero. Questo valore viene usato insieme al flag BMF_DONTCACHE di fjBitmap.
iBitmapFormat
Specifica il formato standard più simile a questa superficie. Se il membro iType specifica una bitmap (STYPE_BITMAP), questo membro specifica il formato. I sistemi operativi basati su NT supportano un set di formati predefiniti, anche se le applicazioni possono inviare formati specifici del dispositivo usando SetDIBitsToDevice. I formati predefiniti supportati includono quanto segue:
Valore | Significato |
---|---|
BMF_1BPP | 1 bit per pixel. |
BMF_4BPP | 4 bit per pixel. |
BMF_8BPP | 8 bit per pixel. |
BMF_16BPP | 16 bit per pixel. |
BMF_24BPP | 24 bit per pixel. |
BMF_32BPP | 32 bit per pixel. |
BMF_4RLE | 4 bit per pixel, lunghezza di esecuzione codificata. |
BMF_8RLE | 8 bit per pixel, lunghezza di esecuzione codificata. |
BMF_JPEG | Immagine compressa JPEG. |
BMF_PNG | Immagine compressa PNG. |
iType
Tipo di superficie, uno dei seguenti:
Tipo | Definizione |
---|---|
STYPE_BITMAP | La superficie è una bitmap. |
STYPE_DEVBITMAP | La superficie è una bitmap in formato dispositivo. |
STYPE_DEVICE | La superficie è gestita dal dispositivo. |
fjBitmap
Se la superficie è di tipo STYPE_BITMAP ed è una bitmap in formato non compresso standard, è possibile impostare i flag seguenti. In caso contrario, questo membro deve essere ignorato.
Valore | Significato |
---|---|
BMF_DONTCACHE | La bitmap non deve essere memorizzata nella cache dal driver perché si tratta di una bitmap temporanea, creata da GDI, che il driver non visualizzerà mai più. Se questo flag è impostato, il membro iUniq di questa struttura verrà impostato su 0. |
BMF_KMSECTION | Viene usato solo da GDI e deve essere ignorato dal driver. |
BMF_NOTSYSMEM | La bitmap non è in memoria di sistema. EngModifySurface imposta questo flag quando sposta una bitmap nella memoria video. |
BMF_NOZEROINIT | La bitmap non è stata inizializzata da zero. |
BMF_TOPDOWN | La prima riga di analisi rappresenta la parte superiore della bitmap. |
BMF_WINDOW_BLT | GDI imposta questo flag per notificare al driver lo spostamento di una finestra da una posizione dello schermo a un'altra. |
Quando le informazioni su una particolare superficie sono richieste da un driver, il driver deve accedere a SURFOBJ. Questa struttura consente di accedere rapidamente alle proprietà della superficie.
Quando una struttura SURFOBJ rappresenta una bitmap GDI, il driver deve essere in grado di determinare il formato della bitmap e individuare i bit bitmap.
Quando una struttura SURFOBJ rappresenta una superficie del dispositivo, il driver deve essere in grado di individuare l'handle del dispositivo per la superficie.
Per altre informazioni sul supporto di immagini compresse JPEG e PNG, vedere DEVINFO.
Requisito | Valore |
---|---|
Intestazione | winddi.h (include Winddi.h) |