zoukankan      html  css  js  c++  java
  • 一只菜鸟从C#转向cpp开发的两周过程 (WinMobile)

    我是一名软件专业的学生,目前是最后一年,之前在学校学习的是C#&WinMobile专业,学了一年多,当然,可以视为桌面开发.但是个人学艺不精,现在开始实习,找到了一家很喜欢的软件公司,也是做Mobile平台开发,但是公司用的是cpp,完全抓狂!书到用时方恨少,艺到用时恨不精啊,正所谓自作孽不可活,冤冤相报何时了```好了,我不废话了,总之面临着个人感觉很严峻的考验,我智力一般,底子薄,很后悔在学校的时候没更刻苦一些,我的头头儿很厉害,可以说是那种偶像级的人物,他给了我一些小任务做做,看我能不能适应,第一个任务,是一个类似downloader的东西,要求有进度条,还要有速度显示,需求很简单,几句话说完,那么,下面我来说一下我这两周的经历,希望能对一些和我一样的同志们有所帮助.(我很啰嗦吧>_<)

    先贴一下我第一周的小结

    周一 开始进行WinMobile平台的native开发测试,但是完全找不到方向,一片混乱,大批没见过用法和类型都没见过,尝试了建几个不同类型的小项目,完全用不起来,更别提设计思路。查看了msdn上面的native开发介绍,并且翻阅了一本英文WinMobile开发手册,并且利用搜索引擎和在论坛交流,有了一点眉目,但是很不清晰,第一天完全被击败,抓狂!

    周二 开始尝试接触MFC编程,然后发现了其与Win32编程紧密不可分割,概念上的东西清楚了些,初步可以确定利用Win32或者MFC项目来实现功能,同时在网上翻阅了大量资料,认真阅读了VC++入门经典中的Windows编程概念和MFC的相关知识,并且开始注意VC++与之前学习的C++的大量差异,从基本类型到各种习惯用法,一天下来收获很多,方向明确了些,同时找到了一些mobilenative开发相关资料,但是尝试建立项目仍然不成功,然后在经典教材的指导下从windows开始平台练习,查阅网上的例子,然后在WinMobile开发手册的帮助下实现了一个小例子,对mobile下的开发稍微熟悉了一些。

    周三 概念上处于比较混乱的状态,大脑似乎陷入死循环,前一天接受的东西量比较大,消化不良,延续着周二的学习方式,尝试仿照网上的例子做试试,但是做着做着就乱了,再次进行不下去,再次陷入了泥沼

    周四 查阅侯捷的关于MFC的书的时候受到了启发,勿在浮沙筑高台,再次调整方向,花费了将近三小时看了孙鑫关于MFC编程和Win32编程概念的课程视频,对于之前的东西消化效果好了很多。大概设计了程序的实现需要的步骤,认真阅读别人的例子,研究了WinMobile开发手册及msdn上面关于网络连接方面的API,虽然仍有不明白的地方,但是效果明显好于前面几天,当然这也和之前几天的积累分不开,研究的同时在一些论坛上面和别人交流,得到了一些宝贵的经验。这次建立的项目并没有作废。

    周五 今日进展很不错,界面进一步完善,程序设计更加明朗,在中午的时候终于将程序的连接部分做好了,并做了一切测试验证。编写期间发生了很多问题,但是都一一克服下来,目前初步确立下一步的工作,进行网络传输和数据读写,但是现在网络传输部分考虑了HTTPSOKECT,但是不知道哪种方式更好,在这里还没有一个全局观,手头也没有资料了,我现在在着重考虑,至于文件读写方面,我觉得倒不会多难,当然,是相对于网络传输部分来说,此外还有个任务,就是进度条的实现,目前有一些想法,当然,现在这三点中首要考虑的仍然是网络传输的问题。

    这星期的学习中阅读了大量资料,受益匪浅,同时关注了别人的很多宝贵经验和理解看法,感慨良多,并且对于前面困难艰苦的程度也更能明白,当然对于以后可能更加严峻有了些心理准备,不过困难仍是要用来解决的,我更清楚了与网上众多高手间的差异,我会努力缩短差距,这是我目前除项目之外的第二目标,以上。

    下面是我第二周的小结

     

    周一  上周主要完成了拨号连接部分的程序,本周开始考虑数据传输部分,进度比预期的慢得许多。首先有一些体会,不熟悉MFC编程是一方面,而且目前的情况是由易入难,更多的是思维上的不习惯,感觉dotNet环境更偏向于人的设计思维,而VC++更偏向于面对机器的直接,不过确实感觉MFC更加详细强大,但是新的MFC库有向dotNet的设计思路靠拢的趋势,查找一些功能实现的时候发现,新出的API用起来更加简便。之前预计用socket通讯来完成数据传输部分,但是很快发现这个想法并不适合,首先socket通讯要求有配套服务端程序,更多的应用是属于端到端的应用,通用性受局限,并且查阅了资料,感觉用socket的话有些偏离主题,并且还要面临更多的未知问题。

     

    周二 再次思考了一下,终于决定将目光转向之前不在意的HTTP应用,开始打算用 InternetConnectHttpOpenRequestHttpSendRequest的模式实现,在网上找到了一些桌面端的示例和资料,开始着手准备,之所以选择这个方式的原因是因为可以用HttpQueryInfo函数实现查询要获得的资源的大小问题,当然,后来发现了InternetOpenUrl更方便。用了一个网页试验了下,成功,但是换了一个网页又不行,开始有一些比较奇怪的问题,文件大小不能查询,连接不到,再次抓狂。后来发现,有的资源不能被下载,而有的资源不能查询大小。再此过程中学会了GetLastError的使用。

     

    周三 通过理解的加深,发现Winnet类中更多的奥妙,InternetOpenUrl可以分解为 InternetConnectHttpOpenRequestHttpSendRequest,而竟然还存在一个 URLDownloadToFile

    函数可以拆分为三个函数:InternetOpenInternetOpenUrl InternetReadFile用来直接下载,听说有些木马下载器就是用这个函数做的,几句写完-——#  然后决定采用InternetOpenUrl来实现,做的还算顺利,另外对于制造缓冲来写文件有了一些印象,但是只是初步印象,不能够掌控自如。程序越做越明了,这是一个下载器,不知道别的下载器怎么判断文件名的,正则表达式么?此外对于之前做的网络连接部分有了更深的理解。

     

    周四 今天主要是要完成进度条和速度显示,利用HttpQueryInfo函数的辅助很方便的实现了,用于计算速度的方法主要是依靠写入数据的速度来判断,这样比较真实。不过今天除了一个意外,几乎耗掉了一整个下午,就是double类型转换成CString的问题,用strSpeedFormat

  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/elanp/p/1589921.html
Copyright © 2011-2022 走看看