我做了个服务器和客户机,用VFW来捕获视频图片(是位图),
然后客户端连续传输位图到服务器,服务器来显示位图,
可是我发现显示的不连续,常常是两图显示之间显示的是全黑的,
请问:有什么好的解决办法?
                      //显示位图
int         cxDib, cyDib ;
BITMAPINFO  * pbmi ;
BYTE        * pBits ;
pbmi   = (BITMAPINFO *)pBmp;
pBits  = (BYTE *) pBmp +40;               //位图数据开始的位置
cxDib  =      pbmi->bmiHeader.biWidth ;  //位图的宽度
cyDib  =  abs(pbmi->bmiHeader.biHeight); //位图的长度 
//先把位图画在内存设备上下文上 HDC hdc;
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
int cx,cy;
cx=cxDib; 
cy=cyDib; 
//
HDC memhdc;
memhdc=CreateCompatibleDC(hdc);
//创建与窗口句柄兼容的位图
HBITMAP hBitmap,holdBitmap;
hBitmap=CreateCompatibleBitmap(hdc,cx,cy);
holdBitmap=(HBITMAP)SelectObject(memhdc,hBitmap);
          
SetDIBitsToDevice (memhdc, 
0,                    // xDst
0,                    // yDst
cxDib,                // cxSrc
cyDib,                // cySrc
0,                    // xSrc
0,                    // ySrc
0,                    // first scan line
cyDib,                // number of scan lines
pBits, 
pbmi, 
DIB_RGB_COLORS) ;

CWnd *pWndStaic2=GetDlgItem(IDC_STATIC2);
CDC  *pDC=pWndStaic2->GetDC(); RECT rect;
pWndStaic2->GetClientRect(&rect);

         StretchBlt(pDC->m_hDC,0,0,rect.right,rect.bottom,memhdc,0,0,cx,cy,SRCCOPY);因为我考虑到服务器的显示器的大小、设置不同,所以不是直接用SetDIBitsToDevice在服务器端显示,
而是先画到内存中,然后在用StretchBlt来拉申显示(服务器端的控件STATIC显示的大小可能与设置有
关,所以用拉申函数),我这个代码应该也是双缓冲区了吧