WEB开发网
开发学院软件开发VC 基于套接字通信的远程截屏显示与控制技术 阅读

基于套接字通信的远程截屏显示与控制技术

 2008-05-31 21:39:12 来源:WEB开发网   
核心提示: StretchBlt(hbufdc,0,0,ScreenX,ScreenY,hdcmy,0,0,ScreenX,ScreenY,SRCCOPY);hBit=(HBITMAP)SelectObject(hbufdc,hOldBitmap);2.2转化设备相关位图(DDB)至设备无关位图[3]

StretchBlt(hbufdc,0,0,ScreenX,ScreenY,hdcmy,0,0,ScreenX,ScreenY,SRCCOPY);

hBit=(HBITMAP)SelectObject(hbufdc,hOldBitmap);

2.2转化设备相关位图(DDB)至设备无关位图[3](DIB)

DIB自带颜色信息,可以实现调色板管理,任何运行Windows的计算机中都可以处理这种标准的位图格式,BMP文件中就包含了一个DIB,主要由位图文件头、位图信息头、调色板和DIB图像数据4个部分组成,DDB向DIB的转化实际上就是利用DDB中包含的图像信息,填充DIB除位图文件头的另外3个部分,从而得到与设备无关的位图数据。最后可再通过添加位图文件头,构成一幅标准的BMP图像。

(1)通过BITMAP句柄hBit,得到位图信息,随后填充BITMAPINFOHEADER结构,计算InfoHeader长度,初始化调色板,最后分配存储空间存放上述信息头与调色板数据;

GetObject(hBit,sizeof(bitmap),(LPSTR)&bitmap);

int ncolors=1<<(bitmap.bmPlanes*bitmap.bmBitsPixel);

DWORD dwLen=sizeof(BITMAPINFOHEADER)+ncolors*sizeof (RGBQUAD);

HANDLE hDib=GlobalAlloc(GMEM_FIXED,dwLen);

(2)计算位图数据实际占用的字节数,使其宽度大于或者等于离4最近的整数倍,修正原biSizeImage数值,然后重新计算并分配空间用于存储信息头,调色板和实际图像数据;

bi.biSizeImage=((((bi.biWidth*bi.biBitCount)+31)&~31)/8)*bi.biHeight;

dwLen += bi.biSizeImage;

if(handle=GlobalReAlloc(hDib,dwLen,GMEM_MOVEABLE)) hDib=handle;

(3)向开辟的指定存储区域中复制上述信息头、调色板以及实际图像信息3部分数据,最后返回该存储区域的句柄,得到最终的DIB位图;

LPBITMAPINFOHEADER lpbi=(LPBITMAPINFOHEADER)hDib;

上一页  1 2 3 4 5 6  下一页

Tags:基于 套接字 通信

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接