windows API 菜鸟学习之路(四)

昨天说今天写一个Windows下载器的,早上一上午的选修课,逃不掉,现在的老师基本上都点名,悲剧啊········

进入正题吧,

写好的东西下面是截图

 

 

昨天的进度条可能会卡死,但是可以调用线程解决。今天的代码里面会涉及就不再详细讲解了

进入今天的正题

void CProgress_02Dlg::OnOK() 
{
	// TODO: Add extra validation here
	
	//CDialog::OnOK();

	HANDLE hrhread;    //线程句柄
	DWORD lppara = 1 , lpid;
	hrhread = CreateThread( 0 , 0 , downs , &lppara , 0 , &lpid);  创建新的线程  downs下载函数
	UpdateData(true);
}


这个基本上都因该看得懂就不详解了

DWORD WINAPI downs(LPVOID lppara)
{
	CString kks;//获取IDC_EDIT_URL的变量
	CWnd *pwnd = AfxGetMainWnd();//获取窗口指针
	CProgressCtrl *ps = (CProgressCtrl *)pwnd->GetDlgItem(IDC_PROGRESS1);
	CInternetSession netsession;
	char buffer[512];
	CStdioFile *sfile;
	pwnd->GetDlgItemText(IDC_EDIT_URL , kks);//获取网址
	sfile = netsession.OpenURL(kks , 1 , INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD );
	CFile filename(sfile->GetFileName(), CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
	int bit;
	int pos  = sfile->SeekToEnd();//获取文件尾的指针
	sfile->SeekToBegin();//获取开头的指针
	
	ps->SetRange( 0 , pos);
	pos  =0 ;
	while (bit = sfile->Read(buffer , 512))		//读取文件大小
	{
		pos += bit;
		ps->SetPos(pos);			//设置进度条位置
		filename.Write(buffer , bit);    //写入本地文件
	}
	return 0;
}



 

红色部分是winnet相关的部分,现在不解释

以后详解。

我在学校的网速快,下载一下子就下载完了,但是下载的文件大小变化的很慢。不知道为什么。

 

 

本次受了不少挫折,用线程的时候出现了很多问题,主要是自己不够熟悉。

还有一个就是对internet编程不熟悉,导致下载了之后文件大小还是没有变化!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值