2010-04-01 6 views

ответ

1

Если вы #include <windows.h> должны быть BITMAPFILEHEADER struct уже.

PBITMAPFILEHEADER bmfh_ptr = (PBITMAPFILEHEADER)(buffer + offset); 
// where buffer is a char[] array. 
+0

Это правда, но как насчет того, если вы не строите среду или для окон? – Fredrick

+0

@Fredrick: Тогда вы не используете Windows API, частью которого является этот тип. – GManNickG

+0

@Fredrick: Затем скопируйте объявление этой структуры в ссылку, которую я включил. – kennytm

1

ОС агностиком C реализация ++ из 24-битного BMP считывания/записи могут быть найдены: http://code.google.com/p/bitmap/source/browse/trunk/bitmap_image.hpp

Ниже определения Struct из заголовка и информационных блоков:

struct bitmap_file_header 
{ 
    unsigned short type; 
    unsigned int size; 
    unsigned short reserved1; 
    unsigned short reserved2; 
    unsigned int off_bits; 

    unsigned int struct_size() 
    { 
     return sizeof(type)  + 
      sizeof(size)  + 
      sizeof(reserved1) + 
      sizeof(reserved2) + 
      sizeof(off_bits); 
    } 
}; 

struct bitmap_information_header 
{ 
    unsigned int size; 
    unsigned int width; 
    unsigned int height; 
    unsigned short planes; 
    unsigned short bit_count; 
    unsigned int compression; 
    unsigned int size_image; 
    unsigned int x_pels_per_meter; 
    unsigned int y_pels_per_meter; 
    unsigned int clr_used; 
    unsigned int clr_important; 

    unsigned int struct_size() 
    { 
     return sizeof(size)    + 
      sizeof(width)   + 
      sizeof(height)   + 
      sizeof(planes)   + 
      sizeof(bit_count)  + 
      sizeof(compression)  + 
      sizeof(size_image)  + 
      sizeof(x_pels_per_meter) + 
      sizeof(y_pels_per_meter) + 
      sizeof(clr_used)   + 
      sizeof(clr_important); 
    } 
}; 
1

Дословный перевод:

BITMAPFILEHEADER *bmfh = &(buffer[offset]); 

возможно более естественный в c + +:

PBITMAPFILEHEADER bmfh = (PBITMAPFILEHEADER)(buffer+offset); 

но будьте осторожны, что для того, чтобы оба из них правильно работали, буфер лучше всего определять как тип символа.

Обратите внимание, что PBITMAPFILEHEADER определяется как BITMAPFILEHEADER *, как обычно, с именами окон.

Смежные вопросы