﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-银河漫游-文章分类-转载</title><link>http://www.cppblog.com/galaxy42/category/9999.html</link><description>选择远方，风雨兼程</description><language>zh-cn</language><lastBuildDate>Sat, 28 Mar 2009 13:17:24 GMT</lastBuildDate><pubDate>Sat, 28 Mar 2009 13:17:24 GMT</pubDate><ttl>60</ttl><item><title>如何学好VC/MFC</title><link>http://www.cppblog.com/galaxy42/articles/78178.html</link><dc:creator>银河</dc:creator><author>银河</author><pubDate>Sat, 28 Mar 2009 13:17:00 GMT</pubDate><guid>http://www.cppblog.com/galaxy42/articles/78178.html</guid><wfw:comment>http://www.cppblog.com/galaxy42/comments/78178.html</wfw:comment><comments>http://www.cppblog.com/galaxy42/articles/78178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/galaxy42/comments/commentRss/78178.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/galaxy42/services/trackbacks/78178.html</trackback:ping><description><![CDATA[<p>有一天，一个朋友跟我提起，你能不能把你学习VC的经验写成几篇文章，来帮助其他受到VC困扰朋友。我告诉他，我可以写一些这样的文章，但是我不能保证每个VC朋友都能有用。因为没个人的看法不同思路不同，学习的方法也不同。我只能适应广大的而不是个别的。回想一下我学VC的历程就想掉眼泪（cry&#8230;&#8230;&#8230;）。 其实学任何一种语言都是一样的。需要勤奋+毅力+运气=成功，这是我认为的一个公式（不要拿它当定理哦！：P），这里毅力和勤奋是个人因素，而运气这是先天的。所以说一个程序员不是那么好当的。（别告诉我你是程序员！：（）<br>　　如果你以前没有接触过编程语言的话，在接触VC前我建议你先学习一些基础语言，比如C、FOXBASE、PASCAL等都是一些比较好学的基础语言，我当初就是从C语言过度学VC的。学基础语言的目的是学习语法结构和如何编写概念，只有你理解和掌握了这些编程用的工具才能学习高级语言。这些基础语言中我建议大家学C语言，其实VC就是C++也就是C语言的"儿子"，"父亲"学习起来比较容易上手，但遇到类似WINDOWS的程序的时候比较固执不容易沟通（呵呵，好想在说我的父亲^-^）,在这种条件下才有了"儿子"，"儿子"比较开朗应变能力强，但是就因为他这些优点才使初学者难以掌握。</p>
<p>　　VC是C++语言，是一种面向对象的编程语言。他于基础语言不同点在于，基础语言是一条路走到底的（中断技术除外），而面向对象是等待你的指令才往下走，是被动的编程语言。这点是学习VC前必须扭转的概念，如果你不理解他们的区别你就不会编好C++程序。</p>
<p>　　学习前要注意的事情<br>　　1、 开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。</p>
<p>　　2、 开发注重交互的简单应用程序可以使用对话框为基础的窗口，如果文件读写简单这可利用CFile进行。</p>
<p>　　3、 开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。　　　<br>　　4、 利用对话框得到用户输入的数据，在等级提高后可使用就地输入。</p>
<p>　　5、 在对多文档要求不强烈时尽量避免多文档视结构，可以利用分隔条产生单文档多视结构。</p>
<p>　　6、 在要求在多个文档间传递数据时使用多文档视结构。</p>
<p>　　7、 学会利用子窗口，并在自定义的子窗口包含多个控件达到封装功能的目的。</p>
<p>　　8、 尽量避免使用多文档多视结构。</p>
<p>　　9、 不要使用多重继承并尽量减少一个类中? 过多的功能。</p>
<p>　　上面这些学习前要注意的问题，是我在VCHELP抓来的。我下面具体解释一下为什么要注意这些事情。</p>
<p>　　用单文档是因为在VC开发中用到最多的是MFC（还有API），而用Appwizard来生成MFC程序框架是最简单的方法。Appwizard是能够生成3类程序框架，单文档、多文档、对话框程序。这三类程序框架中最简单的是对话框程序，但对话框有一定的局限，不能满足用户的需要。用的最多的要数单文档程序，而多文档程序不易操作，所以做程序前要考虑用什么样的框架来生成程序。</p>
<p>　　因为在MFC里对话框程序开发起来比较简单，容易上手。所以开发一般的小程序的时候首先考虑用对话框。在这里所说的CFile是一个类，这个类可以直接对文件进行，读、写、属性等方面的操作。</p>
<p>　　CformView是Cview的派生类。他继承了Cview所有特性，而且还有类似对话框的功能可以使程序更容易达到交互的作用。</p>
<p>　　这些要注意的事项，不希望大家去死记硬背，而是在以后的学学习中去慢慢的领会。另一个要注意的就是不要给自己太大压力，轻轻松松的学习是最重要的。</p>
<p>　　事件</p>
<p>　　Windows程序设计方法与MS-DOS程序设计的不同就在于Windows程序是事件驱动的。事件驱动的程序是由事件发生来控制。事件驱动的程序设计以一种非顺序的方式处理事件，从而回避了顺序的、过程驱动的方法。</p>
<p>　　事件的含义比较广泛，比较常见的例如：鼠标事件，他包含鼠标移动、鼠标点击、鼠标位于窗口的位置等。而应用程序打开后，在那里静静地等待，等待各种事件发生，然后进行相应的处理，执行特定的功能。事件也可以由用户来定义，例如：某段程序处理完毕也可以作为一个事件。</p>
<p>　　事件驱动程序设计是围绕着消息的产生与处理而展开的。一条消息是关于发生事件的信息。例如：一个键或鼠标按钮被按下，就发生一个消息；而当松开时，另一个消息又发生了。做为一个程序员，你的应用程序主要是对个种消息进行处理。应用程序的执行顺序也是无法预知的，而且消息的产生也不仅仅来源于键盘和鼠标的，消息可由应用程序本身产生，也可由运行的其它应用程序产生，还可以由用户或Windows产生，每当事件发生时，Windows做出记录并将相应的消息分配到有关的应用程序中去。</p>
<p>　　Windows为应用程序消息提供成为消息队列（message queue）的保留区，在操作系统中每个正在执行的程序都有自己的消息队列。由擦袄做系统以及由其他应用程序或用户向应用程序发送的全部消息都存储在队列中，消息们在队中等待被调用。Windows应用程序以特定的循环调用Windows消息，该循环就是通常所说的消息循环（message loop）。消息循环是一个简单的While（）循环，它将一直运行，直到接受到终止执行的消息，才关闭应用程序，停止循环。</p>
<p>　　如果你认为C++语言难学的话，那就错啦！只要有信心铁棒也能磨成针，所以说学什么语言不重要，只要勤奋、只要有恒心什么也不难学。</p>
<img src ="http://www.cppblog.com/galaxy42/aggbug/78178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/galaxy42/" target="_blank">银河</a> 2009-03-28 21:17 <a href="http://www.cppblog.com/galaxy42/articles/78178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>