Bitmap information structure.
Each bit plane logically contains (cx * cy * cBitCount) bits, although the actual length can be greater because of padding.
Note: Many functions can accept either this structure or the BITMAPINFO structure. Where possible, BITMAPINFO2 should be used.
The cbFix field is used to find the color table, if any, that goes with the information in this structure. A color table is an array of color (RGB2) values. If there are N bits per pel (N = cPlanes * cBitCount), the array contains 2**N color values. However, if N = 24, the color table is not required (because the standard-format bit map, with 24 bits per pel, is assumed to contain RGB values), unless either cclrUsed or cclrImportant is non-zero.
typedef struct _BITMAPINFO2 { ULONG cbFix; /* Length of fixed portion of structure. */ ULONG cx; /* Bitmap width in pels. */ ULONG cy; /* Bitmap height in pels. */ USHORT cPlanes; /* Number of bit planes. */ USHORT cBitCount; /* Number of bits per pel within a plane. */ ULONG ulCompression; /* Compression scheme used to store the bit map. */ ULONG cbImage; /* Length of bitmap storage data, in bytes. */ ULONG cxResolution; /* Horizontal component of the resolution of target device. */ ULONG cyResolution; /* Vertical component of the resolution of the target device. */ ULONG cclrUsed; /* Number of color indexes used. */ ULONG cclrImportant; /* Minimum number of color indexes for satisfactory appearance of the bit map. */ USHORT usUnits; /* Units of measure. */ USHORT usReserved; /* Reserved. */ USHORT usRecording; /* Recording algorithm. */ USHORT usRendering; /* Halftoning algorithm. */ ULONG cSize1; /* Size value 1. */ ULONG cSize2; /* Size value 2. */ ULONG ulColorEncoding; /* Color encoding. */ ULONG ulIdentifier; /* Reserved for application use. */ RGB2 argbColor[1]; /* Array of RGB values. */ } BITMAPINFO2; typedef BITMAPINFO2 * PBITMAPINFO2 ;