我的MFC学习之路(一)
因为项目需求,我开始应用MFC写程序。具体接触MFC的时间大概也有两个月了。现在的水平算是刚刚踏入了MFC大门的半只脚。目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围的灵活运用。但是,对于庞大啊MFC来说,我窥探的只是冰山一角。它的消息映射机制,许多类的用法等等还只是一知半解。
刚接触MFC时,发现这简直使用一个庞然大物,完全不知道从哪里开始下手剖析它。这里推荐孙鑫的20集教学视频和侯捷的《深入浅出MFC》,这两个是入门必备。我个人是直接先看视频。先上链接http://blog.csdn.net/roger_ge/article/category/461259/1,这个是别人整理的视频学习笔记。我认为视频也不必要一次看完,首先看第一课至第三课,大致了解Windows编程、C++特性还有MFC内部结构,这个对于以后的编程是很重要的。视频通过实例演示讲解,每一集都会新建一个工程。视频每一集大概有两个小时,前三课主要在理论,光听的话会很枯燥,如果能坚持看完固然好,看不完也不勉强。这时就可以找一本《深入浅出MFC》来看,视频的前三课内容都在书中的前七章。此本书的优势在于,文笔生动形象,易读性强,看起来不是那么枯燥。当然第一次看绝对很多地方是看不懂的,这个不必太在意,我们只需像看小说的时候过一遍就行了,对那些名词留一个印象,至少今后遇到了应该知道在哪本书里见过。
当把以上任务完成后,我至少知道MFC的全称是什么了。接下来的学习我更推荐看视频,因为视频中孙鑫老师会以一个小型的项目会例子,一步一步的教大家编写程序。这时我们就需要建立一个工程,名字不要和视频中的一样。然后一步一步的跟着视频去编写程序,最后运行。当程序过了编译并且生成了一个界面的时候,我非常开心。虽然我想了想发现代码并不是自己的,而且抄代码都需要教,但是那有怎样呢?毕竟工程名是自己的,还是很开心。我觉得这种开心就是因为兴趣所在吧。如果有时间,大家可以一个一个视频跟着学。对于我来说,我根据需求选择性的学习。当视频看完后,我投入了实战中。但是突然发现,看完了视频要写自己的程序,依然无法下手。这时不应急躁,我继续边看边视频边。第一次看视频是完全的复制,第二次则是根据视频仿造符合自己需求的程序。同时当我们遇到问题时,还可以去网上寻找答案或是发帖求助。比较好的论坛有CSDN和博客园。经过了第二次学习并自己写出了程序,这时是很有成就感的。同时我能大概理解了doc/view,消息映射,虚函数和对话框控件等等的运用,能够基本的使用MFC的操作。
达到这个程度时,接下来的东西就学的比较快了。我们可以接触比较大型一点的工程,接触更多的类。每个类的用法都可以从网络搜索到,有能力的可以直接利用MSDN索引类名。经过对工程的需求的一个一个完成,我们学到的东西会越来越多。在写代码的过程中,我会遇到很多让人绞尽脑汁的BUG,有时调试了很久都无法解决。这时我会去各个论坛发帖求助,上面提到过的论坛有很对大牛存在,也会很热心的解答。我知道我现在遇到的BUG越多,我学到的东西也就会越多。
我主张在学习的过程中去做,边学边做,根据需求去学习,这样我们获得的知识就会更深刻的记住,并且能把知识能运用到实际中去,编程尤其重要。但是光学习写代码而不去思考,不去在遇到问题的时候探索问题出现的原因,而只是在意问题的解决方法时,就会让我们永远不能灵活运用,自由创新的去编写程序,而是一直在重复着前人写过的代码。所以我的学习经验总结成一句话:“多写,多看,多想”。
我的MFC学习之路(一)的更多相关文章
- mfc学习之路--如何删除通过控件新增的变量
刚刚学校mfc的人都会遇到这样一个问题(比如我),在照做书做一个mfc程序,给控件新增变量时变量类型错了,但是变量名对了,然后想要加个正确的时候提示"已经存在该对象",然后就傻了, ...
- 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)
初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...
- 我的QT5学习之路(一)——浅谈QT的安装和配置
一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大 ...
- Qt 学习之路 2(2):Qt 简介
Home / Qt 学习之路 2 / Qt 学习之路 2(2):Qt 简介 Qt 学习之路 2(2):Qt 简介 豆子 2012年8月21日 Qt 学习之路 2 43条评论 Qt 是一个著名的 ...
- jQuery学习之路(1)-选择器
▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- RPC远程过程调用学习之路(一):用最原始代码还原PRC框架
RPC: Remote Procedure Call 远程过程调用,即业务的具体实现不是在自己系统中,需要从其他系统中进行调用实现,所以在系统间进行数据交互时经常使用. rpc的实现方式有很多,可以通 ...
- webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...
- [精品书单] C#/.NET 学习之路——从入门到放弃
C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...
随机推荐
- Use ALTER DATABASE to Move Databases
Use ALTER DATABASE to Move Databases Follow Our Daily Tips •facebook.com/TechNetTips• twitter.com/Te ...
- 29个你必须知道的Linux命令
虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...
- 搭建Discuz! (mysql+apache+Discuz! )
0. 配置环境 0.0 安装apache 0.1 安装php 1.数据库准备 1.1 创建数据库用户 1.2 创建discuz使用的数据库(编码:utf8-general-ci) 1.3 把1.2创建 ...
- 单独批次性任务采用MySQL定时器解决需求
有时候我们在开发的时候会遇到一些需求是在某个固定的时间段实现某些特殊功能,只做一次或者有规律的每分钟一次每小时一次,那么这个时候我们可以启用MySQL的定时器来帮忙解决该问题. 比如,有一个场景是要求 ...
- 让asp.net web api同时支持[AcceptVerbs("GET","POST")]
在使用第三方接口时,有时候会看到接口同时支持GET和POST,当时想想webapi有AcceptVerbs特性,没有细想便想当然肯定会支持,后来项目中需要用到,当时在没有参数传入下确实支持,直到早几天 ...
- cocos2dx windows phone平台下CCLabelTTF自己主动换行的实现(2)
前几天发过一篇文章说怎样实现wp8下的CCLabelTTF怎样自己主动换行,后来发现果如预料的那般.效果非常不好.主要是非等宽字体的情况下看着非常糟心.因此再改动了一版.效果要好非常多了. 详细实现事 ...
- 关于自定义adapter使用getApplicationContext()影响主题
最近弄了一个东西,listview+switch构成界面 关于android自定义adapter,继承自baseadapter,发现界面的switch开关主题变了想要的是浅色的主题,但是却发现变成了深 ...
- protocol buffer的简单使用
protocol buffer是一个高效的结构化数据存储格式,用来结构化数据的序列化与反序列化.目前支持java.c++.Python 相对于json而言: 数据量跟小 其他的还没看出什么优势 下载地 ...
- android学习日记13--数据存储之File存储
4.文件存储File File即传统的I/O 流存储文件,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的 ...
- android128 zhihuibeijing 科大讯飞 语音识别
- 科大讯飞 开放平台 http://open.voicecloud.cn/ package com.itheima.voicedemo; import android.app.Activity; i ...