一个很简单的的问题 我用winsock 写了一个远程抓屏的小程序,为什么他传过来的屏幕有时组合的又错误,和源屏幕不一样呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的主要代码是客户端 buff=new char[SENDBLOCK]; if (ScreenInfo.dwSize %SENDBLOCK) { len = recv(sktClient,buff,ScreenInfo.dwSize%SENDBLOCK,0); CopyMemory(p2,buff,len); p2 = p2 + ScreenInfo.dwSize%SENDBLOCK; } p2 = p2 - ScreenInfo.dwSize; closesocket(sktClient); //显示 HWND hWnd; RECT rect; HDC dc; hWnd=GetSafeHwnd (); ::GetClientRect(hWnd,&rect); dc=::GetDC (hWnd); // Define Colors int color = (1<<((LPBITMAPINFOHEADER)p2)->biBitCount); if(color>256) color = 0; // Draw Bit to Window Dc StretchDIBits(dc, 0,0, rect.right,rect.bottom,0,0, ((LPBITMAPINFOHEADER)p)->biWidth, ((LPBITMAPINFOHEADER)p)->biHeight, (LPBYTE)p+(sizeof(BITMAPINFOHEADER)+color*sizeof(RGBQUAD)), (LPBITMAPINFO)p,DIB_RGB_COLORS, SRCCOPY); to shilong那我因该怎样让它同步呢?谢谢你能帮我说清楚一点吗?把主要代码写给我好吗?谢谢!!!! int recbytes = 0 ; int timeout = 0 ; int count = 你要接受到阿大小 char buffer[大小] ; while ( timeout < 10 && recbytes < count ) { int ret =recv( buffer+ recbytes , count - recbytes , 0 ) ; if ( ret < 0 ) { ret = 0 ; } recbytes += ret ; if ( recbytes == count ) { break ; } timeout ++ ; Sleep( 20 ) ; } // while ( timeout < 10 && recbytes < count ){ if ( timeout >= 10 ) { } // if ( timeout >= 10 ){ windows7 关于下载问题 combo box如何清除列表里的所有内容? 编程比赛的一道题目,请高手指点思路~ 求教一个有关基于对话框的打印问题 把时间函数所得到的时间转化成cstring类型 一道面试题 vc++不显示double小数点后多余的0 请问.net beta2 能不能在WIN2K professional上安装? 新手的问题?about ATL and COM QT嵌入MFC Activex控件 界面显示不全 很简单ShellExecute问题 玩过gina.dll的大虾请进来~~!!急~!!(菜鸟送分)
客户端
buff=new char[SENDBLOCK]; if (ScreenInfo.dwSize %SENDBLOCK)
{
len = recv(sktClient,buff,ScreenInfo.dwSize%SENDBLOCK,0);
CopyMemory(p2,buff,len);
p2 = p2 + ScreenInfo.dwSize%SENDBLOCK;
}
p2 = p2 - ScreenInfo.dwSize;
closesocket(sktClient);
//显示
HWND hWnd;
RECT rect;
HDC dc;
hWnd=GetSafeHwnd ();
::GetClientRect(hWnd,&rect);
dc=::GetDC (hWnd);
// Define Colors
int color = (1<<((LPBITMAPINFOHEADER)p2)->biBitCount);
if(color>256)
color = 0; // Draw Bit to Window Dc
StretchDIBits(dc, 0,0, rect.right,rect.bottom,0,0,
((LPBITMAPINFOHEADER)p)->biWidth,
((LPBITMAPINFOHEADER)p)->biHeight,
(LPBYTE)p+(sizeof(BITMAPINFOHEADER)+color*sizeof(RGBQUAD)),
(LPBITMAPINFO)p,DIB_RGB_COLORS, SRCCOPY);
那我因该怎样让它同步呢?谢谢你能帮我说清楚一点吗?把主要代码写给我好吗?谢谢!!!!
int timeout = 0 ;
int count = 你要接受到阿大小
char buffer[大小] ; while ( timeout < 10 && recbytes < count )
{
int ret =recv( buffer+ recbytes , count - recbytes , 0 ) ;
if ( ret < 0 )
{
ret = 0 ;
}
recbytes += ret ;
if ( recbytes == count )
{
break ;
}
timeout ++ ;
Sleep( 20 ) ;
} // while ( timeout < 10 && recbytes < count ){
if ( timeout >= 10 )
{
} // if ( timeout >= 10 ){