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编程不熟悉,导致下载了之后文件大小还是没有变化!
windows API 菜鸟学习之路(四)相关推荐
- windows API 菜鸟学习之路(一)
从今天开始学习 windows api编程,记录菜鸟学习的点点滴滴 首先从线程开始 直接上函数 msdn上面的函数原型 HANDLE CreateThread( LPSECURITY_ATTRI ...
- windows API 菜鸟学习之路(二)
对于昨天的运行结果,在别人的笔记本上面运行了几次,每次都是 create thread succeed ! 和create thread succeed ! parameter is 1 这两种现实 ...
- windows API 菜鸟学习之路(三)
今天自学的是MFC里面的 进度条, MFC创建的框架里面添加一个进度条控件,名字改为IDC_PG; OnInitDialog()函数里面插入下面的代码 CProgressCtrl *pg = (CP ...
- Windows事件等待学习笔记(四)—— 事件信号量互斥体
Windows事件等待学习笔记(四)-- 事件&信号量&互斥体 要点回顾 事件 实验:验证SignalState 第一步:编译并运行以下代码 第二步:观察结果 第三步:修改代码并执行 ...
- Java多线程学习之路(四)---死锁(DeadLock)
Java多线程学习之路(四)-死锁(DeadLock) 1.定义 死锁就是多个线程在竞争共享资源的时候,相互阻塞,不能脱身的状态(个人理解).其实死锁一定程度上可以看成一个死循环. 举个现实生活中的例 ...
- Windows x64内核学习笔记(四)—— 9-9-9-9-12分页
Windows x64内核学习笔记(四)-- 9-9-9-9-12分页 前言 9-9-9-9-12分页 实验一:线性地址转物理地址 页表基址 定位基址 PTE to PXE 实验二:通过页表基址定位各 ...
- Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)
Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...
- Windows保护模式学习笔记(四)—— 中断门陷阱门
Windows保护模式学习笔记(四)-- 中断门&陷阱门 要点回顾 中断描述符表(IDT) 一.中断门 实验:构造一个中断门 第一步:初步构造参数 第二步:确定 Offset in Segme ...
- typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)
上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...
最新文章
- 如果修改postgresql的最大连接数
- python硬件驱动_Python学习:计算机基础之计算机硬件
- CSS设置图片与文字水平居中对齐
- 允许Android随着屏幕转动的控制自由转移到任何地方(附demo)
- 25个吸引眼球的广告设计
- 俄罗斯“指尖旋风”席卷南京
- (10.1)Python学习笔记二
- 在Rstudio中点一点就出来了一个R包
- ubuntu的两种网络连接模式
- 贺利坚老师汇编课程56笔记:CMP指令
- mysql优化之insert/delete/update
- linux mysql数据库升级_Linux升级mysql到5.7
- 数据抽样方式:概率抽样、非概率抽样
- html中圆角和颜色透明度的属性与使用
- Learn Git Branching 学习笔记(Git远程仓库篇)
- Iocomp控件官网下载地址破解功能介绍手册
- 如何在 SAP UI5 应用里显示 PDF 文件试读版
- 一家国营老化工厂的数字化三级跳|案例解析
- 14张Python基础知识点总结思维导图配搭一份视频教程还不能入门?
- Android 框架问题分析案例 - 谁杀了桌面?
热门文章
- chiinv函数java_Excel统计函数:CHIINV函数实例-excel技巧-电脑技巧收藏家
- python正则替换查询_使用Python中的正则表达式进行搜索和替换
- Linux 环境下NFS服务安装及配置
- java编译sql存过_SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨
- 松下机器人找原点步骤_桁架机器人在汽车座椅安装生产线中的应用
- Python 机器学习 随机森林 天气最高温度预测任务(三)
- linux设置环境变量 临时设置 和 永久设置
- 银行业DevOps状态:来自DOES 2018伦敦大会的报告
- 3星|《财经》2017年第29期:未来,国有资本的收益和变现都是补贴社保的渠道...
- 作为搭建网站的程序员,你有Apsara Clouder云计算专项技能认证吗?