1:初始化有关变量
HDC inDC = CreateCompatibleDC(NULL);
BITMAPINFOHEADER bmiHeader;
BITMAPINFO bmpHeader;
int width=300;
int height=240;
bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmiHeader.biWidth=width;
bmiHeader.biHeight=height;
bmiHeader.biPlanes=1;
bmiHeader.biBitCount=8;
bmiHeader.biCompression=BI_RGB;
bmiHeader.biSizeImage=0;
bmiHeader.biXPelsPerMeter=0;
bmiHeader.biYPelsPerMeter=0;
bmiHeader.biClrUsed=0;
bmiHeader.biClrImportant=0;
bmpHeader.bmiHeader=bmiHeader;
2:创建位图选入DC中
HBITMAP hbm = CreateDIBitmap(inDC, &bmiHeader, 0, NULL, NULL, 0);
HGDIOBJ hobj = SelectObject(inDC, hbm);
3:得到BITMAPINFO信息
GetDIBits(inDC,hbm,(UINT)0,(UINT)0,NULL,(LPBITMAPINFO)&bmpHeader,DIB_RGB_COLORS);
然后inDC就成了0X0000000;
都两天了
可怎么办啊
请大家帮忙啊
谢谢
我按下面成粗试过,没出错
HDC inDC = CreateCompatibleDC(NULL);
BITMAPINFOHEADER bmiHeader;
BITMAPINFO bmpHeader;
int width=300;
int height=240;
bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmiHeader.biWidth=width;
bmiHeader.biHeight=height;
bmiHeader.biPlanes=1;
bmiHeader.biBitCount=8;
bmiHeader.biCompression=BI_RGB;
bmiHeader.biSizeImage=0;
bmiHeader.biXPelsPerMeter=0;
bmiHeader.biYPelsPerMeter=0;
bmiHeader.biClrUsed=0;
bmiHeader.biClrImportant=0;
bmpHeader.bmiHeader=bmiHeader;
HBITMAP hbm = CreateDIBitmap(inDC, &bmiHeader, 0, NULL, NULL, 0);
DWORD dwPaletteSize=0;//调色板大小
HGDIOBJ hobj = SelectObject(inDC, hbm);
BYTE* lbuf=new BYTE[width*height+sizeof(BITMAPINFOHEADER)+dwPaletteSize];//假设调色板大小为0
*(LPBITMAPINFO)lbuf=bmpHeader;
GetDIBits(inDC,hbm,(UINT)0,(UINT)10,NULL,(LPBITMAPINFO)lbuf,DIB_RGB_COLORS);
DWORD error_code=GetLastError();
delete []lbuf;