CDC dc;
BYTE *buffer=NULL;
dc.CreateCompatibleDC(NULL);
BITMAPINFO bitmapinfo={0};
bitmapinfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bitmapinfo.bmiHeader.biWidth=40;
bitmapinfo.bmiHeader.biHeight=40;
bitmapinfo.bmiHeader.biPlanes=1;
bitmapinfo.bmiHeader.biBitCount=24;HBITMAP bitmap=CreateDIBSection(dc,&bitmapinfo,DIB_RGB_COLORS,(LPVOID *)&buffer,NULL,0);我用CreateDIBSection创建出一张位图,DEBUG时发现,buffer指向的首地址为空,如果我想向buffer所指空间填充数据,应该怎样做呢?
比如在这张图上画图,可是buffer指向仍然是空.dc.SelectObject(bitmap);
CPen pen(PS_SOLID,5,RGB(255,0,0));
dc.SelectObject(&pen);
dc.MoveTo(5,5);
dc.LineTo(35,35);
dc.MoveTo(35,5);
dc.LineTo(5,35);
pen.DeleteObject();
BYTE *buffer=NULL;
dc.CreateCompatibleDC(NULL);
BITMAPINFO bitmapinfo={0};
bitmapinfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bitmapinfo.bmiHeader.biWidth=40;
bitmapinfo.bmiHeader.biHeight=40;
bitmapinfo.bmiHeader.biPlanes=1;
bitmapinfo.bmiHeader.biBitCount=24;HBITMAP bitmap=CreateDIBSection(dc,&bitmapinfo,DIB_RGB_COLORS,(LPVOID *)&buffer,NULL,0);我用CreateDIBSection创建出一张位图,DEBUG时发现,buffer指向的首地址为空,如果我想向buffer所指空间填充数据,应该怎样做呢?
比如在这张图上画图,可是buffer指向仍然是空.dc.SelectObject(bitmap);
CPen pen(PS_SOLID,5,RGB(255,0,0));
dc.SelectObject(&pen);
dc.MoveTo(5,5);
dc.LineTo(35,35);
dc.MoveTo(35,5);
dc.LineTo(5,35);
pen.DeleteObject();
CPen pen(PS_SOLID,5,RGB(255,0,0));
dc.SelectObject(&pen);
dc.MoveTo(5,5);
dc.LineTo(35,35);
dc.MoveTo(35,5);
dc.LineTo(5,35);
pen.DeleteObject();
楼主是不是要把你这段代码的绘图保存成BMP啊?
如果这样的话可以参考这个帖子:
http://topic.csdn.net/u/20081121/16/272c08e1-fecf-455c-9499-429f1cd94223.html如果非要用CreateDIBSection的话请参考:
http://www.vckbase.com/document/viewdoc/?id=674#A1
上面这个有源代码的 去看看他是怎么用CreateDIBSection的。