关于兼容位图DDB的使用疑问,请各位帮帮忙
我有如下的一些代码:
CRect deskRect;
GetDesktopWindow()->GetWindowRect(deskRect);
HDC deskDC=::GetDC(NULL);
HDC memDC=::CreateCompatibleDC(deskDC);
HBITMAP hBmp=CreateCompatibleBitmap(deskDC,deskRect.Width(),deskRect.Height());
SelectObject(memDC,hBmp);
BitBlt(memDC,0,0,deskRect.Width(),deskRect.Height(),deskDC,0,0,SRCCOPY);
上面的代码在兼容DC及兼容位图上画出了屏幕的区域,创建并对兼容位图做图后现在我想在其他地方继续使用这个DDB,如下代码:
CDC* hDC=GetDC();
CDC memDC2;
memDC2.CreateCompatibleDC(hDC);
memDC2.SelectObject(hBmp);
hDC->BitBlt(0,0,500,400,&memDC2,0,0,SRCCOPY);
下面的这段代码又将兼容位图选入另一个兼容DC画到上前窗口上,为何这样做没有图像?
此时通过
BITMAP bm;
GetObject(hBmp,sizeof(BITMAP),&bm);取得hbmp的bmBits为NULL
虽然上面的代码看上去没什么用,不过我是想让兼容位图可以得到复用,以便传到其他地方使用,但是这样简单地做显示是不行的。
然后我又查看了一些资料说是将DDB转化为DIB,网上流传了一个名为DDBToDIB()的函数我也用过,但是仍然没用。
请问大家有没有解决这个问题的好的方法?关键是要让兼容位图可被重复使用