通过这个代码可以将设备相关位图转化为设备无关位图,然后通过Socket传输
char dot[1572864]; //1024*768*2
CBitmap bmp; //内存位图
CDC wdc; //设备环境
CDC* pDC; //指向桌面窗口的设备环境指针
……
static CWindowDC ddc(GetDesktopWindow()); //引用桌面窗口指针定义对象ddc
pDC=&ddc; //将指针pdc指向ddc
wdc.CreateCompatibleDC(pDC); //建立与ddc兼容的设备环境
bmp.CreateCompatibleBitmap(pDC,1024,768); //建立与ddc兼容的位图
wdc.SelectObject(&bmp); //选择bmp
……
wdc.BitBlt(0,0,1024,768,pDC,0,0,SRCCOPY); //把桌面图像复制到wdc的bmp中
疑问如下:
wdc通过SelectOject不是已经选择了兼容的位图了吗?那么wdc的资料里面不就含有了bmp了吗?为什么还要用BitBlt将图像复制到wdc中呢?这样不会多余吗?
wdc通过SelectOject不是已经选择了兼容的位图了吗?那么wdc的资料里面不就含有了bmp了吗?
bmp刚创建时, 是没内容的, 全黑的, BitBlt后才有桌面实际的图像