从网络那端 读取到数据 BITMAPINFO 这种指针类型 原图数据时这样获取的 
GetDIBits(hdc,hBmp,0,height,m_pBmpBuf+sizeof(BITMAPINFOHEADER)+dwPaletteSize, pBmpInfo,DIB_RGB_COLORS);   取得数据 LPVOID lpBits = (LPSTR)pBmpData+sizeof(BITMAPINFOHEADER)+dwPaletteSize;用  StretchDIBits(dc.m_hDC, rect.left,rect.top,rect.Width()-20,rect.Height()-20, //大图就不会缩放
0+m_Hoffset, 0+m_Voffset,nWidth,nHeight, lpBits, pBmpInfo, DIB_RGB_COLORS,SRCCOPY);
这种方式贴 就能贴出来 如果改用下面的方式 什么都没的
CDC dcMem;
dcMem.CreateCompatibleDC(NULL);
//构建cbitmap对象
CBitmap bit;
bool res = bit.CreateBitmap(nWidth,nHeight,1,16,lpBits);
dcMem.SelectObject(&bit);
dc.BitBlt(rect.left, rect.top, rect.Width() -20,rect.Height()-20, &dcMem, 0, 0, SRCCOPY);谁碰到的 就告诉哈子

解决方案 »

  1.   

    bool res = bit.CreateBitmap(nWidth,nHeight,1,16,lpBits);
    ===========================
    这个应该没有成功,按MSDN的说法,它生成的是一个设备相关的位图,而GetDIBits得到是一个设备无关的位图数据,试试用SetDIBits得到HBITMAP句柄试试
      

  2.   

    CreateDIBitmap();用这个函数试试HBITMAP CreateDIBitmap(
      HDC hdc,                        // handle to DC
      CONST BITMAPINFOHEADER *lpbmih, // bitmap data
      DWORD fdwInit,                  // initialization option
      CONST VOID *lpbInit,            // initialization data
      CONST BITMAPINFO *lpbmi,        // color-format data
      UINT fuUsage                    // color-data usage
    );
      

  3.   

    bool res = bit.CreateBitmap(nWidth,nHeight,1,16,lpBits);
    应该是这个没有成功
    建议用2楼的函数!