Эта структура описана в файле wingdi.h. Эта структура идет самой первой в файле BMP. Вот её описание.
typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
Первой переменной идет bfType - эта переменная содержит тип файла. В нормальном растре первыми буквами идет BM в виде ASCII или 4D42 в шестнадцатеричном виде.
Дальше bfSize должен содержать размер файла в байтах. Говорят, что это значение ненадежно и использовать его не стоит.
bfReserved1 & bfReserved2 зарезервированы и использовать их не нужно.
bfOffBits смещение в байтах от начала растра до массива данных. Этим можно пользоваться.
Прочитать заголовок можно примерно так.
CString filename; CFileDialog fil(TRUE,"bmp","*.bmp"); if (fil.DoModal()==IDOK) { filename=fil.GetPathName(); CFile cf(filename,CFile::modeRead); BITMAPFILEHEADER bf; cf.Read((void *)&bf,sizeof(bf)); cf.Close(); }