VC++程序设计简明教程

所需积分/C币:10 2011-11-26 16:53:10 5.84MB PDF
2
收藏 收藏
举报

详细介绍了如何进行MFC编程,以及对文档、对话框、控件等的使用。
415*文档/视图结构的优点. 42框架——视图的容器 ·“·普音 76 421框架窗口的组成… ∴76 4.2.2框架窗口的创建和清除 .76 42.3框架窗口的子窗口 76 424*框架窗口与用户交互对象 77 43文档——管理和组织数据… ∴77 431一个汽车管理的SD应用程序 43.2构造汽车类CCar 433自定义类CCar的序列化 80 4.34文档类 CDocument 81 43.5文档类的设计 43.6数据存盘——文档数据序列化 82 4.4视图——显示文档数据,提供用户接口 441视图及其派生类 44.2在视图中绘图 44.3用户与视图进行交互 444用户与视图的交互过程 习题 88 第5章利用CDC实现绘图程序… 5.1图形绘制的基本知识 89 511一个简单的图形程序. 89 5.12图形操作的接口—GD.… 90 513图形操作有关的CDC类 514CDC的内容 91 515*设备环境类的三个子类 52VC的文本操作 5.21文本输出函数. 5.2.2文本属性搾制. 52.3文本的字体. .94 524文本处理实例 53CDC的绘图操作 531画点与画线函数操作 96 532绘制封闭图形… 533设置绘图参数 98 5.34绘图模式 535绘图操作实例.99 54 Windows绘图工具 541绘图L具的划分 54.2使用画笔. 543使用画刷. ∴104 544使用库存工具. 107 习题5 第6章用户交互对象一菜单、工具栏和状态栏 110 61菜单 110 611个菜单的综合实例 .111 612菜单的组成与分类 613创建菜单资源.. 614菜单消息… 113 615菜单消息的响应 114 6.1.6*为菜单加快捷键和加速键. 62工具栏 118 621工具栏简介.… 118 622个使川工具栏的应川程序… 119 62.3创建工具栏资源模板 19 624工具栏类 TOolbAr.. 625在应川程序框架中创建工其栏对象…..…. 626工具栏的消息处理机制 63状态栏简介 .123 631状态栏简介…… 632一个使用状态栏的应用程厅 124 633状态栏类 CStatusbar 24 634在应用程序框架中创建状态栏对象….125 63.5创建字符串资涼……… 26 63.6状态栏的消息处理 127 习题6 第7章对话框及常用控件. 71对话框概述. 7.11对话框简介 130 712对话框的分类 7.13对话框的组成.… 7.2对话框程序的创建 7.21一个对话框程序 131 7.2.2创建对话框资源模板 31 723利用对话框类 CDialog操纵对话框.. 72.4初始化对话框. 135 7.25对话框的调川 ..136 7.2.6对话框的消息处理. 137 7.3标准 Windows控件 139 7.31控件简介 139 7.3.2静态控件 140 7.3.3按钮控件.… 7.3.4编辑控件…. 142 7.35列表框控件 146 7.3.6组合框控件 148 7.37控件的类型无关访问 151 7.38*动画控件…. 习题 156 第8章利用ADO组件访问数据库 156 8.1ADO简介… 157 82常用的ADO的对象 157 83使用 Access2003创建数据库 .158 84创姓ADO数据库访问程序 160 841利用ADO技术访问数据库的两种方式 161 842采川ADO控件访问数据库 162 843采用ADO对象操作数据库 844一个使用ADO对象访问数据库的实例 169 习题8. 172 第9章动态链接库 172 91动态链接库概述. 172 911动态链接库定义 173 91.2静态链接与动态链接. 173 913函数的导出与导入 174 914隐式链接与显式链接… 175 915搜索动态链接库 176 916*使用动态链接库的优点 176 92动态链接库的创建… 177 921动态链接库的分类 922DLL的工作原理. 178 923实现递归分形树的DLL 178 93动态链接库的显式调用 931装入动态链接库 932取得函数地址 180 93.3调用动态链接库的实例 81 题9 第10章利用AIL编写COM组件 101CoM组件与ATL 1011COM概述 101.2coM与软件复用 1013与COM有关的概念 1014ATL简介 185 102利用ATL创建COM红件 103在VC和VB中使用CoM组件 103.1调用CoM组件的过程 193 10.32在VC中创建COM组件客户 1033在VB中使用CoM组件. 96 习题10 98 第1章程序设计与VC语言简介 本章内容主要包括程序设计的4个层次、4种程序设计方法的概念、简单的具有输入/输出功能的控制 台程序的设计,以及vC集成开发环境的特点。 要求了解面向对象的程序设计和基于组件的程序设计的特点,掌握结构化程序设计的特点及应用、输 入/输出流在控制台程序中的应用,熟悉单文件控制台应用程序的编写过程,熟纮掌握程序设讣4个层次 的含义及每个层次的重要性。让计算机能正确地执行人们所编写的一系列指令(程序),程序必须以计算机 能理解的)式来表达 程序设计首先是一门技术,而后才是一门艺术。程序设计技术包括4个层次:算法分析与设计、程序 设计语言、程序设计方法学,以及程序设计环境与工具。VC程序设计就涉及到这4个方面。对于初学者, 掌握vC程序开发环境的使用是最基本的,而掌握程序改计语言是匕较凼难的,要从C++的语法、语义和语 用上下工夫。本章从程序设计的概念入手,阐述程序设计的4个层次,并对程序没计方法的演变做了简单 的慨括,期望—开炲就给读者以“森林”的概貌,在其后的一些章节中,掌握森林中的“树木”使读者既 看到树木,又看到森林。最后一节以一个简单的VC程序为例,说明vC开发控制台程序的方法和步骤,为 第2章的程序设计做好实践上的准各 11程序设计与程序设计语言 从1946年第一台计算机ENAC诞生以米,计算机技术无论作为科学学科或现代产业,都已经从昔日的 ∏小鸭,变成了今口的白天鹅。1936年,图灵向伦敦杖威的数学杂志投了·篇论文题为"论数宁计算在决断 难题中的应用"。在这篇廾创性的论文中,图灵给"可计算性"卜了一个严格的数学定义,并提出者名的图灵机 "( Turing Machine)的设想。"图灵机"不是一种具体的机器,而是一种思想模犁可制造一种十分简单但运算能力 极强的计算装置用来计算所有能想像得到的可计算函数。"图灵机"与"冯·诂伊曼机"齐名被永远载入计算 机的发展史中。1950年10月图灵又发表了另一篇题为"机器能思考吗"的论文,成为划时代之作。也正是这 篇文章,为图灵赢得了"人工智能之父"的桂冠。 在计算机技术发展的历史长河中,有两个人是需要我们铭记的:个是图灵,另·个是比尔·盖茨 正是图火用数学的概念形式地对计算的木质做了解释,才使人们认识到,作为一门科学学科,计算机对问 题的求解是建立在高度抽象的耒诎上的。问题的符号長示及处理过程的机械化、严格化等固有特性决定了 数学是计算机科学与技术的重要基础之一。数学及其形式化描述,以及严密的表达和计算,是该学科所用 的重要工以。作为一个产业,当前仟行业的蓬勃发展,就足以证明计算机产业的地位。比尔·盖茨连续几 年都是仝球首富,他带领 Micros纰t公司从事计算机的灵魂欤件的开发。其宀品 Windows操作系统、 Visual basic软件廾发工具人人皆知。不书的目的,就是带领广大读者熟悉其软件开发的旗舰产品— visual C++,并道过它开始我们的程序设计,开始我们对计算机系统的认识过程。 11.1程序设计 人类发明的飞机、电视机质上是对人的四肢和五官的延仰或替代,但其应用却仅仅局限在某些特定 领域;而发明的计算杋却是人类大脑功能的延伸或替代,它的应用出现在人类的各个汘动领域,其应用不 论从渙度还是从广度上讲,都是无山境的。其根本原因在」计算机不是一次性的直接服务产品,它为人类 的服务依赖于栏序,程序的功能有多少,它为人类的服务就有多少。程序是一个逻辑产品,它的出现靠的 是程序设计。 稈序设计是采用种编程语言,为了解决某个特定领域的问题,而使用种设计方法编写计算机稈序 6 的活动。如果把小说比做程序的话,小说创作航是程序设计。只不过小说是表达人的思想,进而控制人的 活动的一种代码,而计算机程序则是表达机器的思想,进而控制机器活动的一科代码,当然这利代码也是 和人相通的。从程序设计的概念,可以看出程厅设计只有如下特征。 ①由于程序设计必须采用果种语言,就像作家写小说,必定采用某种语言一样。因此,要想进行程序设计, 必须懂程序设计语言 ⑨对领域的依颧性ε程序设计往往针紂某个特定的领域,正圆为如此,才岀现了财务软件、工业控制软件 等不同领域的软件 ③要采用某和设计方法进行程序设计,其实质是在程序设计过程中,要掌握一些程序设计方法学 正是由于程序设计有以上特点,决定了程序设计技术有以下四个层次。 112程序设计技术的4个层次 由」计算机科学与技术的大部分研究工作都是圉绕程序设计进行的,一些硬什芯片的设计都廾始用硬 件描述语言米进行“程序设计”。可以说,幣个计算机的广业都在进行厂义的程序设计与开发。作为计算机 专业或计算机相关专业的学牛,学会程序设计,是项基本的技能,是顺利进入计算机行业的·块敲门砖。 因此在大学阶段,围绕程序设计这个核心,掌握程序设计的相关理论与技术,是任何学生都必须掌的基 本功。那么,程序设计都有哪些方面的要求呢? 日前,许多专家己绎公认培养一个高水平的程序员需要接受4个层次的训练,即算法的设计与分析、 程序设计语言、程序设计方法学,以及程序设计环境与工只 113算法与程序 1.算法 所诮算法就是利用计算机解决问趣的步骤。著名的计算机科学家沃思提岀“程序=数据结构+算法”,可 见算法在釋序设计中的作用。如果把徹菜的原料比做数据,做岀}的菜比做设计的程序,那么烹饪的方法就 是算法。可见,要想把程序这道“菜”做好,仅仅有数据(烹饪原料)还不行,还需要掌握算法(烹饪方法)。 高水平的厨师做出的菜好,关键在于烹任的方法。 算法是计算札科学的核心,也是研究计算机程序设计中永恒不变的主题。对于·名桿序员,如果不接 受算法设计与分析的训练,甚至不了解算法在程序设计中的龙头地位,要想编与高质量的应用程序是很困 难的,更不要说编写具有创造性的程序了。当今计算机安仝是很重要的一个课题,其中核心的问题就是寻 找个加密礻易,而解密闲难的算法; Internet的出现,导致在网上进行人量的视频、音频数据的传输,而 要提高数据传输的效率,就要寻找薮据的压缩和解压缩的高效算法 2.程序 程序是以某种语言为工具编制出来的动作序列,它是人类思想的一个载体。计算机栏序是用计算机程 厅设计语言所要求的规范书写出来的一系列动作,它表达了程序员要求计算机进行的操作,该探作的结果 是为人类服务的某种表示形式。程序具有以卜儿个特性。 ①程序的静态与动态属性。程序实际上是一个用计算机语言措述的某个问题的解决步骤,它的表示是 静态的。人们的最终目的是要它解决问题,所以程序必须能够运行,否则毫无用处。也就是说,程序是指 示一个计算动态执行的序列。正因为如此,编写程序就是为机器编写行动计划,形式上必须符合程序设计 语言的规范,内容上要能够得到计算结果,程序的动态执行就是进程 ②程序是程序设计话言抽象的符号示。人们怎样来長示程序?用枳器码最直接,它是机器可以直接“读 懂”的语言,但记起来太麻烦。一整版32位1和0的组合谁都会读错,即使编出二进制程序也得通过穿孔 或其他于段才能“装入”内存。于是人们用八进制、十六进制数据编程,这样就容易读了,也容易转换 接着,人们进一步把操作码变成英文宇母,于是就出现了汇编语言。随后出现了高级程序设计语言,它的 核心是利用自然语言(面向人类的语言)来表达程厅的含义。虽然编程简单,但需要编译系统的转换,将人所 能埋解的自然语言转化为机器所能理解的机器语言。不管什么语言,程序都是抽象的符号。 ③程序是对数据实施算法的过程。按程序设计语言提供的符号和语法写出程序,它同时表达了语义 即该程序要徹的计算。程序的翻译与程序的执行是话义等价的,程序执行后,或是改变(加工)了数据,或是 提供组动作,对‘组数据进行排序星然没有改变数据的值,但改变了它们之间的顺序(结构)关系,这也要 有一个算法。 ④程序是分层嵌套的。在一个程序的执行过程中,可以调用别的程序。 算法在程序设计中的重要性長现在如下3个方面 ①算法具有时问上的稳定性。这一点和程序设计语言不同,ALGO160、 Pascal已江河日下,C++、Java 却如日中天,这说明了话言的稳定性要差些。而C+国际标准委员会之所以要在标准模板库(STL, Standard Template Library)中定义许多算法,就是因为算法具有在时间上的稳定性。即不论进行何种开发,经常会碰 到完成某些固定的操作,比如排厅、查找等,而这些算法在SIL中已经具备了 ②算法的理解、设计和分析都需要掌握扎实的基础理论知识,包括算汯的复杂性理论;各科常用的求 解方法,如递归法、贪心法等。而其木身就是一个相关的学科,需要花相当大的精力才可能学好 ③在程序开发的后期,外面的改计不再是主要的问题,而数据结构和算法的设计却变待愈加重要,算 法不清楚,程序航无法编写。比如让你编一个一元三次方程根的求解程序,你会吗?原因是不是因为算汯不 清楚?向数学专业人上请教一下,了解一元三次方程的求解方法后,编程序还难吗? 114程序设计方法学 20纪60年代后期,随着计算机硬件和通位技术的发展,人们对计算机软件的应用需求不断增加 导致程序的规模与复杂性越来越大,在软作开发领域出现了一些灾难性的问趣。许多软件项目的开发冑期 与开发成本超岀预算,而生产出米的软件广品却可靠性差、可重用性差、可维扩性差,这反玦了墼个软件 行业的牛产效率低下,也就是人们常说的软件危杋。软伻危机的出现,使人们开始认貞研究软件的质量问 题和程序设计方法的问题 程序设计方法学是指在程序设计过程中应遵循的一些原理和方法,程序设计中最关心的是程序的效率 和可靠性。稈序的敚率由算法的效夲来决定,这个仟务靠算法的分析与设计这门课稈来硏究。程序的可靠 性包括两个方面:一是程序的正确性,指程序的实现是否满足了需求,程序的正确性的证明在程序设计方 法学中米研究:二是程序的健壮性,指程序在异常情況下工作的能力 稈序设计方法学主要研究抽象数据类型彐论、程序的控制结构、稈序的正确性证明、稈序变换技术, 以及结构化程序没计与向对象的程序设计范型等。C是一种结构化程序设计语言,C艹是一种面对象的 程序设计语言。结构化程序设计与面向对象的程序设计都是程序设计方法学所研究的,因此通过该课程的 学小,不仅让读者掌握语言,掌握程序设计的技巧,更重要的是掌握程序设计方法,尤其是学会运用面向 对象程序设计方法去解决实际问题。在学习C++语言的各种机制时,不仅要学会使用它们,而且要理解这 些机制。只有这样,才能掌握面向对象的程序设计方法,才容易学会其他面向对象程序设计语言,如Java 等 程序设计方法是独立于只体程序设计语言的技术,由于程序设计离不开程序设计语言,许多人容易混 淆程序设计方法与程序设计语言。程序设计方法与程序设计语言是相辅相成的:采用某种程序设计方法编 写程序芾要相应程序设计语言作为工以,而程序设计语言的设计是为了支持某种程序设计方法 程序设计方法相对于计算机算汯的变化要快一些,但相对于各种程序设计语亠及其版本的变化则稳定 得多,变化最快的则是程序设计环境与上具。 8 115程序设计语言 利用计算机解决实际问题,必须将解决问题的算法转化为程序,这就需要掌握程序设计语言。程序设 计语言是一和适合于计算机和人类阅读方式的描述计算的符号系统。在人类利用程序设计语言解决问题的 历史长河中,曾出现过机器语言、汇编语言和高级语言等,本书探讨的就是利用高级程序设计语言Ⅴisua|C++ 进行稈序的设计。由于语言种类繁多,许多人旦然学习了很多话言,但没有门是精通的,县至对程斥设 计语言的理解也是很肤浅的。许多人对“高缴话言程序设计”与“高级程序设计语言”区分不清楚,其实 高级语言程序设计”强调的是利用某种高级语言达行程序设计的过程,而“高级程序设计语言”强调的 是对高级程序设计语言的理解和应用。程序设计话言是人类自己设计的·种复杂工具,有三类人员与这 工具有关系。 ①程序设计语言的开发者,即设计这种语言的人。如 Bjame Stroustrup被誉为C++之父,是他对C语 言进行了扩充,从而导致了C++的诞生 ②程序改计语言的实现者,即开发编译程序和解释程序的人。我们使用的sua|C++是由 Microsoft实 现的,常用的还有 Borland实现的C++ Builderε它们都采用C+的编译器,是由不同软件开发公司开发的编 译器。 ③程序设计语言的使用者,即用这种语言进行程序开发的人。本书的读者就属于这类人,只有正确理 解所使用的⊥具,才能使编写的程序与想像中的一致 量然我们属于第三类人,但只有对其他两类人所从事的工作有所理解,才能对程序设计语言有一个高 层次的认识,才能编写高水的程序。尤其在学习 Visual c+-时,除了掌握其语亡机制,会使用该语言进行 程序设计外,还应该思考如下些问题:为什么要引入这种机制?这种机制有什么好处?其内邙是如何实现 的?它有一个什么样的理论基础?是否有其他的解决方式?不同的解决方式有何异同? 116*程序设计的重要性 稈序设计既充满挑战性,又富有魅力,同时也是·个无止境的工作,每年都有数以万计的优秀人才加 入其中。利用C艹来进行程序设计,符合年辁人狂放的思维,虽然枓燥,但突显智慧;虽然难解,但富有 挑战。程序设计中融入了年轻人的仝部智慧、想像力和创造力,他们的努力,定将换来计算机宀业和计算 学科突飞猛进的发展。笔者认为,程序设计的重要性,可从以下3个方面来理解。 ①程序设计是计算机专业学生走向工作岗位的一项基木技能 ②程序设计是非计算机专业学生跨入计算机领域的一条实践之路。 ⑧程序设计的四个层次决定了程序设计是一项全面的技能 12程序设计方法的演变 程序设计方法的发展,是一个逐步提高的过程,是一个与实际应用需求互相制约和促进的螺旋式的发 展进程。计算机诞生后的多年,由于计算机硬件昂贵、机器的速度慢、存储空间小,加之编写程序上要 韋机器语言或汇编语言,迫使编写程序成为一种技巧与艺术,程序的可理解性、可维护性放到了第位 20世纪60年代以后,随着计算机硬件技术的迅速发展,使得计算机的速度与存储睿量不断提髙,成本急 剛下降。加之程序规模越来越大,许多程序的廾发不再仅靠个人的技艺,而需要团队的共同努力才可能完 成。旧的程序设计方法很少考虑团队各成员之间交流协作的需要,因此,为了提高程序的可靠性、可亘用 性和可理解性等因素,诞生了很多程序设计方法。以下就以时间为顺序,谈谈程序设计的演变过程,应币 点掌握各个阶段程序设计方法的特点。 121结构化程序设计 i构化程序设计诞生于20世纪60年代,到了80年代已经成为程序设计的主沇。早期的 Turbo c编程 就属」结构化编程,它与νC的面向对象编程并不矛盾,是面向对象程序设计的基础。面向对黎技术是对结 构化程序设计方法的继承。事实上,VC既可以进行面向对象程序设计,也可以进行结构化程序设计 结构化稈斥设计的核心思想是:①程序实体主要由算法和数据结构组成;②其分析与设计方法采用的 是“自顶向下,逐步求精”的程序设计方法;③在程序的流程控淛结构上遵循“单入口〃单出口”的理念: ④任何程序的结构都是由顺疗、迭择与循环来完成的,取消了goto语句 以上核心思想强调的是,稈序设计的主体是先要确定采用什么样的数据结构,而后着重在该数据结构 上施加某种算法,其算法与数据结构是分离的。“自顶冋下”是一种分解问趣的技术,它按照先全局后局部, 先抽象后具体,先总体联系后局细节來对醞序进行分解,它与程序的控制结构无关。“逐步求精”是指将 个完整的问题分解成若十个相对独立的问题,只要这些问题得到正确的解决,整个问题也就解泱了。也 就是说,编程是一步步地、不断地精细化( refining)的过程。它导致结构化程序的连续分解,最终成为三种 棊本控制结构的组合。单入凵/单出凵指组成结构化程序的模块(一条语句、一段程序、一个函数都可以是 模块),其基本特征是其仪有个入冂和个出∏,即要执行该模块的功能,只能从该模块的入口处开 始执行,执行完该模块的功能后,从模块的岀口转而执行其他模块的功能,即使模块中包含多条语句,也 不能随意从其他语句开始执行,或提前退出模块。 【例1.1】打印自然数中前n个素数。程序的卡文件是 PrintPrim.cpp。程序演示 存放n个紊数的数据结构,用一维数组。 判断素数算法:根据素数的定义,ⅹ是素数,当且仪当ⅹ只能被1和自身整除。因此,要桷定ⅹ是不是 素数,只要检查ⅹ能不能被不超过sqrt(x)的数整除即可。 划分模块,逐步求精:打印自然数中前n个素数的任务划分为判断x是否素数、找前n个素数、打印 前n个素数三部分,以函数抽象之 程序实现: #include stdio. h #include math h 抖 define maxlen10000 bool ls Prim(intx)/判断x是否素数 for(int i=2; i<=sqrt(x); i++) if(x%i==0 return false return truc void find Prims(inta[,intn)〃找前n个素数行于数组a中 int x=1: a[0]=2;/第个素数是2,不用求 inti=1;∥/数组的卜标位置 while (i<n x=x+2;/)紊数除了2外,只能是奇数,从3搜寻 if(lsPrim(x)) a[]=x;/将素数x放到数组a的第i个位置处

...展开详情
试读 127P VC++程序设计简明教程
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
VC++程序设计简明教程 10积分/C币 立即下载
1/127
VC++程序设计简明教程第1页
VC++程序设计简明教程第2页
VC++程序设计简明教程第3页
VC++程序设计简明教程第4页
VC++程序设计简明教程第5页
VC++程序设计简明教程第6页
VC++程序设计简明教程第7页
VC++程序设计简明教程第8页
VC++程序设计简明教程第9页
VC++程序设计简明教程第10页
VC++程序设计简明教程第11页
VC++程序设计简明教程第12页
VC++程序设计简明教程第13页
VC++程序设计简明教程第14页
VC++程序设计简明教程第15页
VC++程序设计简明教程第16页
VC++程序设计简明教程第17页
VC++程序设计简明教程第18页
VC++程序设计简明教程第19页
VC++程序设计简明教程第20页

试读结束, 可继续阅读

10积分/C币 立即下载 >