假设我在程序中已经得到了一个窗口的位图,然后我想把它通过winsock发送给其他远程计算机,请问应该怎么做?

解决方案 »

  1.   

    楼上两位的方法可行,可以文件形式传输图象然后把接收到的文件load进内存设备然后画到屏幕上,或者把得到的位图的每个像素点的值GetPixel()存到一个COLORREF数组里,分成n份依次send过去,另一端接收到数据后SetPixel到内存设备,全部接收完毕之后再将内存设备一次画到屏幕上,我是这样做的可以实现了,不过感觉方法比较笨,可能有人还有更好的方法吧
      

  2.   

    CDC dc;
    int nWidth;
    int nHeight; dc.CreateDC("DISPLAY", NULL, NULL, NULL);
    nWidth = ::GetDeviceCaps(dc, HORZRES);
    nHeight = ::GetDeviceCaps(dc, VERTRES); CDC dcMem;
    dcMem.CreateCompatibleDC(&dc); CBitmap bitmap;
    bitmap.CreateCompatibleBitmap(&dc, nWidth, nHeight); CBitmap *pOldBitmap = dcMem.SelectObject(&bitmap);
    dcMem.BitBlt(0, 0, nWidth, nHeight, &dc, 0, 0, SRCCOPY); dc.SelectObject(pOldBitmap); 通过以上代码,可以得到屏幕的位图了,但是发送怎么做呢?有人能接下去写出一个发送部分的代码吗?我希望能得到一些启发,因为这部分我是一点都不懂,我只会用winsock发几个字符,谁能教我写个开头,给我一些思路吗?