int dc_h = 32;
int dc_w = 32; BITMAPINFO* pbi = new BITMAPINFO;
memset(pbi,0,sizeof(BITMAPINFO));
pbi->bmiHeader.biBitCount = 8;
pbi->bmiHeader.biCompression = BI_RGB;
pbi->bmiHeader.biHeight = dc_h;
pbi->bmiHeader.biPlanes = 1;
pbi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pbi->bmiHeader.biSizeImage = 0;
pbi->bmiHeader.biWidth = dc_w;
pbi->bmiHeader.biXPelsPerMeter = 0;
pbi->bmiHeader.biYPelsPerMeter = 0; for (int ii = 0; ii < 256;ii++)
{
pbi->bmiColors[ii].rgbBlue = ii;
pbi->bmiColors[ii].rgbGreen= ii;
pbi->bmiColors[ii].rgbRed = ii;
pbi->bmiColors[ii].rgbReserved = 0;
} BYTE* lpBits;
HDC memhdc = CreateCompatibleDC(pdc->GetSafeHdc());
HBITMAP hBitmap=::CreateDIBSection(NULL,pbi,DIB_RGB_COLORS,(void**)&lpBits,NULL,0);
ASSERT(hBitmap!=NULL);
// BYTE* pdata = new BYTE[dc_h*dc_w];
// memset(pdata,0,dc_w*dc_h);
// SetDIBitsToDevice(pdc->GetSafeHdc(),0,0,dc_w,dc_h,0,0,0,dc_h,pdata,pbi,DIB_RGB_COLORS); delete pbi;
//delete [] pdata; return;
CreateDIBSection函数总是错误码8
int dc_w = 32; BITMAPINFO* pbi = new BITMAPINFO;
memset(pbi,0,sizeof(BITMAPINFO));
pbi->bmiHeader.biBitCount = 8;
pbi->bmiHeader.biCompression = BI_RGB;
pbi->bmiHeader.biHeight = dc_h;
pbi->bmiHeader.biPlanes = 1;
pbi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pbi->bmiHeader.biSizeImage = 0;
pbi->bmiHeader.biWidth = dc_w;
pbi->bmiHeader.biXPelsPerMeter = 0;
pbi->bmiHeader.biYPelsPerMeter = 0; for (int ii = 0; ii < 256;ii++)
{
pbi->bmiColors[ii].rgbBlue = ii;
pbi->bmiColors[ii].rgbGreen= ii;
pbi->bmiColors[ii].rgbRed = ii;
pbi->bmiColors[ii].rgbReserved = 0;
} BYTE* lpBits;
HDC memhdc = CreateCompatibleDC(pdc->GetSafeHdc());
HBITMAP hBitmap=::CreateDIBSection(NULL,pbi,DIB_RGB_COLORS,(void**)&lpBits,NULL,0);
ASSERT(hBitmap!=NULL);
// BYTE* pdata = new BYTE[dc_h*dc_w];
// memset(pdata,0,dc_w*dc_h);
// SetDIBitsToDevice(pdc->GetSafeHdc(),0,0,dc_w,dc_h,0,0,0,dc_h,pdata,pbi,DIB_RGB_COLORS); delete pbi;
//delete [] pdata; return;
CreateDIBSection函数总是错误码8
http://apps.hi.baidu.com/share/detail/32960697
我用的就是createdibsection啊
不对吧
参考这个
http://topic.csdn.net/u/20100913/11/bcfceb93-87ae-41f8-b09b-bbdc6afcbc60.html
也不是
0或者dc_h*dc_w都不好使啊 dc_w我已经对齐了
pbi-> bmiHeader.biSize = sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);pbi-> bmiHeader.biXPelsPerMeter = GetDeviceCaps(hdc,HORZRES)/GetDeviceCaps(hdc,HORZSIZE)*1000;
pbi-> bmiHeader.biYPelsPerMeter = GetDeviceCaps(hdc,VERTRES)/GetDeviceCaps(hdc,VERTSIZE)*1000;HBITMAP hBitmap=::CreateDIBSection(NULL,pbi,DIB_PAL_COLORS,(void**)&lpBits,NULL,0); 程序应该不会再出错了....