<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; zhi_qiu_yi_ye</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/zhi_qiu_yi_ye/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Mon, 28 May 2012 14:23:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>从 MFC 到嵌入式 Linux，如何一步一步学编程</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/03/24/mfc-linux/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/03/24/mfc-linux/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 08:02:28 +0000</pubDate>
		<dc:creator>zhi_qiu_yi_ye</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[开放源代码]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/03/24/mfc-linux/</guid>
		<description><![CDATA[  相信很多人和我一样直到大一才有自己的电脑，这篇文章就是我从最初学c++到MFC一直到现在学嵌入式Linux的经历，相信对初学者很有帮助，行家绕路。 我是电子技术专业的，学习计算机技术完全是兴趣所致。大一刚来就开了大学计算机基础课和c++，记得当初我什么也不懂，不知道什么是excel，不知道什么是ppt，照着书上一步一步的弄，感觉很神奇，c++虽然不知道什么东西，但感觉挺有意思。没事的时候经常去机房捣鼓电脑，第一次学会用迅雷，第一次学会下电影，印象最深刻的当然是第一次cs。我玩的第一个游戏就是cs，后来就一直FPS。大一下买了人生中第一台电脑，兴奋不已。首先看各种电脑使用技巧的书，看电脑报。经常看到书中说操作注册表，就借了本注册表的书看，当时的感觉就是不知所云。而后又捣鼓上了命令行，还有批处理，顿时感觉自己很高端。之后又去学操作系统安装，自己下了镜像刻了盘安装，第一次成功时非常兴奋，因为当时班上很多人都不会。后来又学会了Ghost，学会了硬盘分区，学会了数据恢复，当然都是最基本的用法。电脑熟悉的差不多，该投身编程了，可是两个学期的c++课上完，我还是不知道怎么编出我们平时使用的软件，一直面对着一个黑洞洞的DOS窗口，学什么汉诺塔、八皇后，还有类、对象、链表、堆栈等等，相信大家都记得。没办法，只能靠自己了。后来知道编窗口程序用MFC，正值暑假来临，于是下了孙鑫的那一套视频教程，借了几本书回家了。孙鑫的那套视频教程对入门MFC很有帮助，虽然看的时候很无聊，我还是坚持看了大部分。做了几个小例子。 转眼到了大二，正值人生的迷茫期，大二上基本在游戏中度过，省略。但有一本书不得不说，绝影的《疯狂的程序员》，期末考试期间我看完了这本书，真是醍醐灌顶，对我帮助很大，推荐大家看看绝哥的这本书。 大二下重拾MFC，我选择了图像部分，最直观，最有意思。微软的那一套GDI真够人学的，我觉的MSDN上很多东西说的糊里糊涂。不过对于没有编过程序的我来说，非常有意思，各种图片的操作，能产生很多意想不到的效果。比如什么透明效果，灰度效果，动画效果，这让我很着迷，后来还借了本c++游戏设计的书，照着上面做了个游戏框架（书上说是游戏引擎，我觉的太夸张了），这段时间非常充实，也非常开心，可以说学的一马平川，毫无阻碍。接触MFC的大半年中，我一直在思考，MFC是什么，c++是什么，visual c++是什么，win32又是什么，汇编又是什么，难道编程就是在这个类那个类里添加代码，那么这些类又是哪儿来的，程序是如何执行的，从哪儿开始在哪儿结束。很少有书介绍win32编程，最多就是个Hello World，给人的第一印象就是又臭又长，实现的功能还那么简单。我找了很多书，看了很多贴子，有几本书很有用，推荐大家看看，一个是《windows核心编程》，讲操作系统机制的，还有《windows程序设计》，不仅教了设计方法，还介绍了MFC框架，我看了之后才明白win32和MFC是一样的，MFC只是对win32编程方法的一种c++封装，他封装了各种API，用类的方式呈现，所以编程就是在各种类里加加代码。以前一直有个迷惑的问题，学GDI的时候，有的书用API，有的书用MFC类，所以我一直分不清CDC，HDC，CPaintDC，CClientDC等等。知道MFC是一种类封装方法后，我毅然决定从此不用MFC，只用最基本的win32编程，抓住问题的本质。 后来我用win32的方法做了几个自己用的工具，期间我一直没用MSDN，而是用PlatForm SDK，纯API合集。抛开了MFC那繁杂的框架，虽然自己写的代码多了，但我有一种通透的感觉，这才是真正的编程，什么都是自己写的，从入口到结束你都了解的一清二楚。记得帮朋友写了一个工具，给他源代码时就一个几百行的cpp文件，他问我从哪儿开始看，在哪儿添加代码，怎么没有类等等，我那个cpp里显示一个窗口后就进入了消息循环，后面就几个消息回调函数，很简单。在我的讲解下他才知道这就是所谓的纯win32编程，他问我怎样才能看的懂，我说你还有很长的路要走，呵呵。 我是电子系的，有一段时间抛弃win32编程去学单片机了。刚开始很不习惯，以前写代码都是几百行几百行一个文件，现在这些例子都是几行几行的，还得我耗时间做，真让人蛋疼。我觉得用c语言这样写很二，于是我决定用汇编写，现在我还觉得这个决定太正确了。大二学过一门叫《微机原理与接口》的书，讲的是x86的汇编和计算机的基本结构，虽然当时我觉得这本书太过时了，还8086，现在都酷睿了，后面我还会提到，这本书非常有用。既然决定学51的汇编，就要学他的指令和架构。51虽然简单，但学习他的架构对后来的学习帮助很大。他的指令和运行时数据有不同的寻址空间，相对于现在的计算机就是程序就在硬盘里读，临时数据放在内存里，而现在冯式计算机都是把程序调入内存执行，代码和数据都在内存里。51的指令和数据有不同的寻址空间，是指那些临时数据在内存里，像代码中已经初始化的字符串等数据还是在指令寻址空间的，并通过几个特殊的指令读取这些数据，指令空间是只读的。51的SFR（特殊功能寄存器）映射在内存空间中，这就像计算机的内存映射I/O，S3C2410也是这样，不过51的A累加器和R0~R7也都映射在内存中就和计算机不一样了。学习51的架构对学习计算机体系结构有很大的帮助，因为他简单，而且他的很多东西和计算机差不多。51的汇编绝对比x86的汇编学起来简单，因为他没有段寄存器，你只要知道他有不同的寻址空间，几种寻址方式的不同，还有内存寻址空间的分布，哪些是临时寄存器，哪些是SFR，哪些是位寻址区等等，你就可以很快上手。 初通51之后，我又转而去学FPGA，相信很多大学生都是，纯属跟风，当时我还不知道他是干什么的。平台是学校提供的，因为我参加了一个校内比赛。当时为做出作品，我花了很长时间写代码，又花了更长时间调试，FPGA很麻烦，所有的东西都要你自己动手，每个信号的时序都要把握好。最后我写了2千多行的代码，调试了N久也没完成作品。不过学FPGA很有好处，它让你知道计算机世界是怎么构成的，所有的数字电路都是由最简单的与非逻辑和寄存器构成的，例如CPU，他也是个数字逻辑电路，如果给你时间，你完全可以自己写一个出来，但质量是另外一件事。 （未完待续）]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>相信很多人和我一样直到大一才有自己的电脑，这篇文章就是我从最初学c++到MFC一直到现在学嵌入式Linux的经历，相信对初学者很有帮助，行家绕路。</p>
<p>我是电子技术专业的，学习计算机技术完全是兴趣所致。大一刚来就开了大学计算机基础课和c++，记得当初我什么也不懂，不知道什么是excel，不知道什么是ppt，照着书上一步一步的弄，感觉很神奇，c++虽然不知道什么东西，但感觉挺有意思。没事的时候经常去机房捣鼓电脑，第一次学会用迅雷，第一次学会下电影，印象最深刻的当然是第一次cs。我玩的第一个游戏就是cs，后来就一直FPS。大一下买了人生中第一台电脑，兴奋不已。首先看各种电脑使用技巧的书，看电脑报。经常看到书中说操作注册表，就借了本注册表的书看，当时的感觉就是不知所云。而后又捣鼓上了命令行，还有批处理，顿时感觉自己很高端。之后又去学操作系统安装，自己下了镜像刻了盘安装，第一次成功时非常兴奋，因为当时班上很多人都不会。后来又学会了Ghost，学会了硬盘分区，学会了数据恢复，当然都是最基本的用法。电脑熟悉的差不多，该投身编程了，可是两个学期的c++课上完，我还是不知道怎么编出我们平时使用的软件，一直面对着一个黑洞洞的DOS窗口，学什么汉诺塔、八皇后，还有类、对象、链表、堆栈等等，相信大家都记得。没办法，只能靠自己了。后来知道编窗口程序用MFC，正值暑假来临，于是下了孙鑫的那一套视频教程，借了几本书回家了。孙鑫的那套视频教程对入门MFC很有帮助，虽然看的时候很无聊，我还是坚持看了大部分。做了几个小例子。</p>
<p>转眼到了大二，正值人生的迷茫期，大二上基本在游戏中度过，省略。但有一本书不得不说，绝影的《疯狂的程序员》，期末考试期间我看完了这本书，真是醍醐灌顶，对我帮助很大，推荐大家看看绝哥的这本书。</p>
<p>大二下重拾MFC，我选择了图像部分，最直观，最有意思。微软的那一套GDI真够人学的，我觉的MSDN上很多东西说的糊里糊涂。不过对于没有编过程序的我来说，非常有意思，各种图片的操作，能产生很多意想不到的效果。比如什么透明效果，灰度效果，动画效果，这让我很着迷，后来还借了本c++游戏设计的书，照着上面做了个游戏框架（书上说是游戏引擎，我觉的太夸张了），这段时间非常充实，也非常开心，可以说学的一马平川，毫无阻碍。接触MFC的大半年中，我一直在思考，MFC是什么，c++是什么，visual c++是什么，win32又是什么，汇编又是什么，难道编程就是在这个类那个类里添加代码，那么这些类又是哪儿来的，程序是如何执行的，从哪儿开始在哪儿结束。很少有书介绍win32编程，最多就是个Hello World，给人的第一印象就是又臭又长，实现的功能还那么简单。我找了很多书，看了很多贴子，有几本书很有用，推荐大家看看，一个是《windows核心编程》，讲操作系统机制的，还有《windows程序设计》，不仅教了设计方法，还介绍了MFC框架，我看了之后才明白win32和MFC是一样的，MFC只是对win32编程方法的一种c++封装，他封装了各种API，用类的方式呈现，所以编程就是在各种类里加加代码。以前一直有个迷惑的问题，学GDI的时候，有的书用API，有的书用MFC类，所以我一直分不清CDC，HDC，CPaintDC，CClientDC等等。知道MFC是一种类封装方法后，我毅然决定从此不用MFC，只用最基本的win32编程，抓住问题的本质。</p>
<p>后来我用win32的方法做了几个自己用的工具，期间我一直没用MSDN，而是用PlatForm SDK，纯API合集。抛开了MFC那繁杂的框架，虽然自己写的代码多了，但我有一种通透的感觉，这才是真正的编程，什么都是自己写的，从入口到结束你都了解的一清二楚。记得帮朋友写了一个工具，给他源代码时就一个几百行的cpp文件，他问我从哪儿开始看，在哪儿添加代码，怎么没有类等等，我那个cpp里显示一个窗口后就进入了消息循环，后面就几个消息回调函数，很简单。在我的讲解下他才知道这就是所谓的纯win32编程，他问我怎样才能看的懂，我说你还有很长的路要走，呵呵。</p>
<p>我是电子系的，有一段时间抛弃win32编程去学单片机了。刚开始很不习惯，以前写代码都是几百行几百行一个文件，现在这些例子都是几行几行的，还得我耗时间做，真让人蛋疼。我觉得用c语言这样写很二，于是我决定用汇编写，现在我还觉得这个决定太正确了。大二学过一门叫《微机原理与接口》的书，讲的是x86的汇编和计算机的基本结构，虽然当时我觉得这本书太过时了，还8086，现在都酷睿了，后面我还会提到，这本书非常有用。既然决定学51的汇编，就要学他的指令和架构。51虽然简单，但学习他的架构对后来的学习帮助很大。他的指令和运行时数据有不同的寻址空间，相对于现在的计算机就是程序就在硬盘里读，临时数据放在内存里，而现在冯式计算机都是把程序调入内存执行，代码和数据都在内存里。51的指令和数据有不同的寻址空间，是指那些临时数据在内存里，像代码中已经初始化的字符串等数据还是在指令寻址空间的，并通过几个特殊的指令读取这些数据，指令空间是只读的。51的SFR（特殊功能寄存器）映射在内存空间中，这就像计算机的内存映射I/O，S3C2410也是这样，不过51的A累加器和R0~R7也都映射在内存中就和计算机不一样了。学习51的架构对学习计算机体系结构有很大的帮助，因为他简单，而且他的很多东西和计算机差不多。51的汇编绝对比x86的汇编学起来简单，因为他没有段寄存器，你只要知道他有不同的寻址空间，几种寻址方式的不同，还有内存寻址空间的分布，哪些是临时寄存器，哪些是SFR，哪些是位寻址区等等，你就可以很快上手。</p>
<p>初通51之后，我又转而去学FPGA，相信很多大学生都是，纯属跟风，当时我还不知道他是干什么的。平台是学校提供的，因为我参加了一个校内比赛。当时为做出作品，我花了很长时间写代码，又花了更长时间调试，FPGA很麻烦，所有的东西都要你自己动手，每个信号的时序都要把握好。最后我写了2千多行的代码，调试了N久也没完成作品。不过学FPGA很有好处，它让你知道计算机世界是怎么构成的，所有的数字电路都是由最简单的与非逻辑和寄存器构成的，例如CPU，他也是个数字逻辑电路，如果给你时间，你完全可以自己写一个出来，但质量是另外一件事。</p>
<p>（未完待续）</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/03/24/mfc-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

