我只是想实现Http下载的控制
可是无论我用MFC还是API结果都是:SendRequest()或HttpOpenRequest()的时候就将整个文件下在完成了(大文件要等很长时间。。)
Read()只是将存在CHttpFile* pFile中的数据读出来罢了,并不是从网络上读到的(因为我把网络断开测试过了!)我想问问有没有控制的方法,或者就是WinInet的毛病呢!谢谢!
可是无论我用MFC还是API结果都是:SendRequest()或HttpOpenRequest()的时候就将整个文件下在完成了(大文件要等很长时间。。)
Read()只是将存在CHttpFile* pFile中的数据读出来罢了,并不是从网络上读到的(因为我把网络断开测试过了!)我想问问有没有控制的方法,或者就是WinInet的毛病呢!谢谢!
解决方案 »
- 新手请教 怎么获取CTreeCtrl控件中滚动条滚动消息?
- 关于多线程的问题
- __int64使用问题?
- 为何创建的视图只能导航一个网页,而且网页上的任何链接都不能响应???怎么办??
- 当我查找行时,查到的行在list控件显示部分的下面,怎么让它自动滚动到list的显示部分
- 哪位知道什么短信设备比较好?
- 哪位高手知道VC还有哪些好书?除了深入浅出和VC技术内幕以外!
- 窗口拆分的小问题!
- Listctrl快速显示!!!!!(请高手赐教!!!!!)(问题解决另开贴加分)
- 我如何将vc++变成英文版的???我现在用的是创天“中文”。
- 有没有把十六进制字符串转成数字的函数?类似atoi(char *)的,在线等!!!
- 能不能取得一个位图中间某一部分(比如说一个rect)的句柄
hRootHandle = InternetOpen(
TEXT("Example"),
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0); hOpenUrlHandle = InternetOpenUrl(
hRootHandle,
TEXT("http://www.LooseSoft.com"),
NULL,
0,
INTERNET_FLAG_RAW_DATA,
0); //InternetSetOption( hOpenUrlHandle,
int leng = 0;
char lpBuffer[ 1024 ]; while( TRUE )
{
memset( lpBuffer, 0, 1024 ); DWORD dwRead;
BOOL b = InternetReadFile( hOpenUrlHandle,
lpBuffer,
1024,
&dwRead ); if( !b )
break;
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT2 );
pEdit->SetSel( leng, leng );
CString strText = lpBuffer;
strText.Remove( '\r' );
strText.Remove( '\n' );
pEdit->ReplaceSel( strText );
//break;
leng += dwRead; if( dwRead < 1024 )
break;
}// Close the handle created by InternetOpenUrl, so that the
// InternetOpen handle can be closed.
InternetCloseHandle(hOpenUrlHandle); // Close the handle created by InternetOpen.
InternetCloseHandle(hRootHandle);
就是不明白,为什么人家做的时候都好象是从网络上一点点下载数据的,到我这里就变成
先下载再读取了?我虽然没实现这个程序,不过我的程序和他没什么区别呀!也就是一个是builder,一个是vc!有没有人实现过这个程序,给我解释一下,我已经困惑好几天了!
这个HttpSendRequest(FhRequest, NULL, 0, NULL, 0);是不是就把数据完全下载了呢?感激感激!
你的意思是wininet不能实现了?用控制的手段来伪装我也可以办到。。
不过http://www.csdn.net/magazine/sourcecode/Topic/0/76.shtm所说的程序难道有一定的欺骗性?
呵呵,如果是这样,我只好改用socket了!用wininet也是想学些东西,真的不行吗?