VisualC++编程学习方法技术培训2主要内容1.VisualC++编程的学习路线2.学习重点和难点3.学习方法和资料获取途径4.例程实现与分析5.总结31.VC编程学习路线VisualC++是开发Windows平台多种应用程序的开发环境,开发程序类型包括:•基于的Console程序(DOS界面)•基于MFC或SDK的EXE程序(Windows界面)•动态链接库DLL程序•基于MFC的ActiveX控件程序开发中会涉及很多方面特性和技术领域,不同行业背景程序的侧重点不同。本公司实际项目多为工业控制类软件,强调与硬件控制配合,对运行效率、可靠性要求较高,兼顾界面美观性。1.1编程学习目的451.VC编程学习路线1.2需具备基础知识要想用VisualC++开发出高性能的工控软件,需要掌握以下几方面扎实的基础知识:•C/C++编程语法及相关知识•常用算法及数据结构知识•Windows应用程序运行机理•常用调试方法和技巧学习上述基础知识是一个长期、漫长的积累过程,在目前图书市场良莠不齐的现状下,多读书、学会鉴别书好坏是一项重要技能。61.VC编程学习路线1.3不同学习阶段和技能水平每个人从入门编写第一个“Helloworld”程序学起,到自己独立开发成熟软件,都需要经历几个阶段。不同的人应当首先定位自己所处学习曲线上的位置,再决定今后的学习目标。1)起步阶段:对C\C++语法基本了解,只能看懂书上TurboC例程,自己不能灵活应用if,for等语句独立编小程序。(学校C语言考试通过)2)入门阶段:对C\C++语法熟练掌握,自己能完成教材上作业题目(100行代码以内),对windows类程序较陌生,只能看懂书上MFC例程,对其内部机理不了解。(通过计算机等级考试)71.VC编程学习路线1.3不同学习阶段和技能水平3)初级阶段:对Windows程序运行机理基本了解,掌握常见错误的调试、解决方法,能根据要求完成简单windows程序设计,(计算器等,1000行代码以内),程序不涉及硬件、数据库、串口等专项技术。(能编程解决一些实际问题,但不深入)4)晋级阶段:对windows类程序运行机理和基础知识较熟悉,能够开发一些源于实际项目中的小程序(10000行代码以内)。但对一些深层原理问题和各种实际问题解决经验欠缺,相关专项技术掌握不全面,(数据库、串口通信、网络、多媒体、多线程、文档/视图结构、ActiveX控件)。(成手)81.VC编程学习路线1.4推荐学习路线VC++控制台程序C及C++语法和基本数据结构VC++对话框程序熟悉各种常用Windows控件使用方法各种TurboC下的小程序题目,多练习《VisualC++技术内幕》6,7,8章各种常见VC书籍中对话框部分例程VC++基于FormView的SDI程序,了解文档视图结构和GDI绘图《VisualC++技术内幕》19章之前的其它章节,各种常见VC书籍中部分例程VC++各种程序学习数据库、多线程、文件操作等专项技术博览穷书甄别好、坏书起步阶段入门阶段初级阶段晋级阶段910112.学习重点和难点2.1学习过程中始终需要的特质1)兴趣对编程没有兴趣是整个学习过程中最大的拦路虎,它直接影响学习的动力和连贯性。喜欢思考程序中的数学问题,并能从中获得成就感;喜欢探索自己未知编程领域的知识;喜欢和别人交流编程学习经验。2)勤奋编程学习需要积累大量的技术细节知识,没有持之以恒的毅力和刻苦精神,无法实现编程水平上质的提高。3)方法好的方法可以令学习效率提高,多记编程笔记,多和别人交流讨论。12展示一些实例1314152.学习重点和难点2.2学习重点1)常用数据结构和算法数据结构:数组、堆栈、队列、链表算法:排序、矩阵运算、FFT变换等;2)基于消息的Windows程序运行机制从传统的DOS程序的顺序方式执行转变到Windows下基于事件响应的程序执行方式;3)Windows程序窗口界面和底层代码间的数据传递;4)基于MFC类库的Windows程序的结构和启动-消亡时间顺序;162.学习重点和难点2.2学习重点5)第三方ActiveX控件的学习和使用;6)VisualC++开发环境的熟练使用,程序调试技巧和问题分析方法的学习;7)遇到新遇到的技术问题时,寻找各种资源,解决问题的能力。查MSDN,翻阅书籍,求助于网络;如何和人沟通,描述清楚自己的问题;如何从相类似的代码历程中消化成自己的代码。172.学习重点和难点2.3学习难点1)基于MFC类库的Windows程序的结构和启动-消亡时间顺序,程序出现动态运行错误时,如何快速定位问题代码,是一个程序员永远的课题!2)不同类对象间数据的传递和访问;3)内存泄露的避免和预防。4)通过直接阅读源代码理解程序功能特性5)用简短的语言描述清楚自己的问题;?18定义窗口加载菜单菜单资源菜单句柄动态运行错误2.3学习难点2.学习重点和难点19newXXXXXdeleteXXXXXmalloc()free()内存泄露2.3学习难点2.学习重点和难点20窗口对象间传递、访问数据2.3学习难点2.学习重点和难点212.3学习难点CTempDlgDlgdlg;//定义窗口对象m_pMainWnd=&dlg;//获取窗口指针intnResponse=dlg.DoModal();//显示窗口,读回返回值if(nResponse==IDOK){m_pMainWnd-m_ctrlxxx.ShowWindow();//}对象的动态活动周期,范围2.学习重点和难点223.学习方法和资料获取途径3.1学习方法1)多模仿,不偷懒。对书中例程一定要自己创建,打字,编译实现,实现中出现的每一个问题都是经验的积累,否则低级错误将永远摆脱不掉;2)好记性不如烂笔头。对于纷繁庞杂的编程知识点,有选择的记录在笔记上,时常复习,才能使知识真正消化成自己的。3)当知道自己需要补充哪方面知识时,抓紧一切时间,使用题海战术。233.学习方法和资料获取途径3.1学习方法4)学会庖丁解牛,学会嫁接移至。对软件的修改,最坏不过系统死机,重启。所以,理解程序功能后,要尝试分离不同子功能或从别的程序中添加子功能。5)学会总结知识点,对待编程问题多尝试实现一体多解。243.学习方法和资料获取途径3.2资料获取途径1)多读书图书馆、书店、网络电子书等多方面入手,从中吸取知识养分。2)从网络上下载例程序,分析、理解。3)MSDN1号安装盘中sample目录下的VC例程,可谓一个Microsoft高手们提供的代码图书馆。4)网站论坛,BBS上别人的提问与回答。5)电子期刊网,VC相关小论文253.2经典书目介绍3.学习方法和资料获取途径264.例程实现与分析4.1任务描述计算器程序是计算机应用中最常见的任务,它的特点是:数学概念清晰实现算法简单难度适中可发挥空间大实现方法多样加减乘除运算功能,并支持正负号,倒数、开平方功能1)采用VC控制台(DOS界面)C函数方式实现;2)采用VC控制台(DOS界面)C++类方式实现;3)采用VC对话框(Window界面)程序方式实现;27开始初始化变量fResult,fNumber1iOperator1,iOperator2清屏clcscr()Running?读入输入字符串输入是数字?读入数字到fResult输入是exit?读入符号到iOperator1Running=falseiOperator1是等号?处理加减乘除运算处理保存计算符号到iOperator2退出处理其它非加减乘除运算处理VC控制台(DOS界面)C函数实现;28VC控制台(DOS界面)C++类实现;开始退出定义Ccalculator类对象Foo1调用Foo1.Run()private:doublefNumber1;chariOperator1;chariOperator2;public:doublefResult;boolRunning;CCalculatorpublic:CCalculator();virtual~CCalculator();voidRun();private:voidclcscr();intGetInput(char*pBuffer);voidProcess();初始化变量fResult,fNumber1iOperator1,iOperator2输入是数字?读入数字到fResult输入是exit?Running=false读入输入字符串读入符号到iOperator1iOperator1是等号?处理加减乘除运算处理保存计算符号到iOperator2处理其它非加减乘除运算处理开始清屏clcscr()Running?读入输入字符串退出处理输入字符串29VC对话框(Window界面)程序实现private:doublefNumber1;chariOperator1;public:doublem_OutputNumber;CCalculatorDlgpublic:CCalculator();virtual~CCalculator();private:virtualBOOLOnInitDialog();afx_msgvoidOnBtnDive();afx_msgvoidOnBtnMult();afx_msgvoidOnBtnSub();afx_msgvoidOnBtnAdd();afx_msgvoidOnBtnEqur();afx_msgvoidOnBtnSqrt();afx_msgvoidOnBtnDaoShu();afx_msgvoidOnBtnSign();afx_msgvoidOnOk();305.总结本次培训介绍了VisualC++学习中的自我定位、方法、内容、实例等方面1)如何定位自己处在的学习阶段;2)学好VC的特质和重点内容;3)学习资料的获取途径;4)计算器实例程序的设计与实现