可能昏头了,请大家看看,我拷贝MSDN里面BITMAPFILEHEADER的结构定义,改名如下,
typedef struct tagBITMAPFILEHEADER2 { 
  WORD    bfType; 
  DWORD   bfSize; 
  WORD    bfReserved1; 
  WORD    bfReserved2; 
  DWORD   bfOffBits; 
} BITMAPFILEHEADER2, *PBITMAPFILEHEADER2; void LoadFile(const char* pszDibFileName)
{
        BITMAPFILEHEADER2 bitmapFileHeader2;
FILE * pf = NULL;
pf = fopen(pszDibFileName, "r");
         if( !pf) return; fread( &bitmapFileHeader2, sizeof(BYTE), sizeof(BITMAPFILEHEADER2), pf );
}在WINDOWS下跟踪,第一句 我把 BITMAPFILEHEADER2换为VC自己的BITMAPFILEHEADER就可以,用BITMAPFILEHEADER2就不行。可这个结构和BITMAPFILEHEADER完全一样啊。

解决方案 »

  1.   

    BITMAPFILEHEADER2 bitmapFileHeader2;
    int n1 = sizeof(bitmapFileHeader);//14
    int n2 = sizeof(bitmapFileHeader2);//16我从MSDN拷贝下来的结构,内存占用居然不一样。难道MS 的BITMAPFILEHEADER的定义不是MSDN里面所描述的那样??
      

  2.   

    编译时用的对齐不一样,windows 定义这个结构是用的是按 2-byte 对齐,试试#pragma pack(push, 2) // 改为按 2 byte 对齐,默认是 4typedef struct tagBITMAPFILEHEADER2 { 
      WORD    bfType; 
      DWORD   bfSize; 
      WORD    bfReserved1; 
      WORD    bfReserved2; 
      DWORD   bfOffBits; 
    } BITMAPFILEHEADER2, *PBITMAPFILEHEADER2; #pragma pack(pop) // 还原
      

  3.   

    www.solarstones.com/wzq
    到这里来看看
      

  4.   

    多谢 In355Hz(好象一条狗) ,(那我只好象一头笨牛 了 :) )
    我也怀疑是对齐问题,只是不知道怎么做,用老兄的方法已经搞定。
      

  5.   

    In355Hz(好象一条狗) 完全正确。