求教GetDIBits问题:
The GetDIBits function retrieves the bits of the specified compatible bitmap and copies them into a buffer as a DIB using the specified format. GetDIBits copy的是下面BITMAP的哪一个部分,还是全部。typedef struct tagBITMAP {
  LONG   bmType; 
  LONG   bmWidth; 
  LONG   bmHeight; 
  LONG   bmWidthBytes; 
  WORD   bmPlanes; 
  WORD   bmBitsPixel; 
  LPVOID bmBits; 
} BITMAP, *PBITMAP;下面代码中为什么用了两次GetDIBits ,而且代码参数还相同int result;
memset(&m_bminfo, 0, sizeof(m_bminfo));//清零
m_bminfo.bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);//大小
m_bminfo.bmi.bmiHeader.biBitCount = 0;//每个象素的位数 result = ::GetDIBits(m_hmemdc, m_membitmap, 0, 1, NULL, &m_bminfo.bmi, DIB_RGB_COLORS);
if (result == 0) {
return FALSE;
}

result = ::GetDIBits(m_hmemdc, m_membitmap,  0, 1, NULL, &m_bminfo.bmi, DIB_RGB_COLORS);
if (result == 0) {
return FALSE;
}

解决方案 »

  1.   

    一般第一遍 调用GetDIBits填充信息头,并获得图象数据的尺寸。图象数据指针为NULL
    第二遍加载图象数据,如果FALSE返回错误
      

  2.   

    一般第一遍 调用GetDIBits填充信息头,并获得图象数据的尺寸。图象数据指针为NULL
    第二遍加载图象数据,如果FALSE返回错误
    ---------------------
    第二遍加载图像数据?参数可是NULL呀,没办法做copy,目标地址不存在。另外请问:
      GetDIBits copy的是下面BITMAP的哪一个部分,还是全部。typedef struct tagBITMAP {
      LONG   bmType; 
      LONG   bmWidth; 
      LONG   bmHeight; 
      LONG   bmWidthBytes; 
      WORD   bmPlanes; 
      WORD   bmBitsPixel; 
      LPVOID bmBits; 
    } BITMAP, *PBITMAP到底这个方法copy的数据是什么?