Эта структура описана в файле 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();
}