MFCWindows程序设计第二版)
京)新登字158号WFC Windows程序设计(第2阪)Programming windows with MFC, Secend EditionJeff ProsiseCopyright 1999 by Jeff ProsiseOriginal English Language Edition Copyright 1999 by Jcfr ProsisePublished by arrangement with the original publisher, Microsoft Pressa division of Microsoft Corporation Redmond, Washington, U.s.A.本书中文版由 Microsoft press授权清华大学出版社出版北京市版权局著作权合同登记号:团字:01-97-0866号版权所有翻印必究。本书封面贴有清华大学出版社激光防伪标签,无标签者不得销售。书名; MFC Windows程序设计(第2版)作看:北京博彦科技发展有限责任公司出版者:清华大学出版社(北京清华大学学研大厦,邮编100084)http://www.tup.tsinghuaedu,cn贲任編辑:丁朝欣印刷者:北京牛山批兴印刷厂发行者:新华书店总店北京发行所本:787×9691/16印张:74彩插:2字数:1617千字版次:2001年9月第1版2001年9月第1次印刷书号:ISBN7-900631-92-5印数:001~400定价:128.00元鸣谢这本书的出版离不开大家的努力,在此特别感谢无私地付出智慧和汗水的两位朋友Sally Stickney,本书的主瑞,指引我通过英语的雷区,竭力使本书的语言更可读 Marc young,作为技术编辑,他的才干让我钦佩,他废寝忘食地帮我查找错误,测试示例程序,验证结果。正是因为他们,才使本书更加出色。感谢!6像我的许多同行一样,我学习 Windows编程是从读Peld的书《 windows程序设计》—一本所有 Windows程序员都使用的 Windows编程圣经—开始的。在刚刚成为一名MFC程序员时,那天我冲进书店,想买一本能够与 Programming Windows相媲美的MFC編程书籍,但是却没有结果。于是我决定自己写一本这样的书。它正是愁手中所拿到的这本书,也正是当初我在初学MFC时,希望拥有的那本书。正如您所知,MFC是用于 Windows编程的 Microsoft c+类库。本书并不是一本关于C++的书,而是一本关于使用MFC而不是 Windows aPi,进行32位 Windows应用程序编程,以访问操作系统的基本侍性和服务的书。它原本为以下两种编程人员所写■打算学习MFC的 Windows ap程序员未进行过 Windows编程的程序员无论您属于哪种人,我假设您已经了解C+,而且熟悉C++语法,如派生类及虚函数。如果是这样的话,您已在征服MFC编程之山的历险中迈出了坚实的第一步。即使是有经验的 Window程序员在初读MFC代码时也会感到迷惑。一部分是由于Visual c+代码生成向导所生成的代码所致,另一个原因是因为无数行代码隐藏在MFC类库中。这正是本书使用特殊的方法来写MFC的缘由。本书从让您亲自手写代码开始(不用向昙),使用MFC1.0的应用程序结构风格,也就是说既不用文档也不用视图。只有在您掌握了上述的基础知识,初步认识了简单的MFC类库如CWnd和 CWin App之后,我才开始介绍向导并教您使用MFC的文档视图结构的方法。您将逐渐理解 windows的关键组件及它的消息驱动机制,如图形设备接口(CD〕。我相信用这种方法可以使MFC的学习变得生动有趣而不是令入气馁。我认为一旦您认真地学完这本书,然后再站在老练的 windows程序员的角度来回顾学习过程中的甜酸苦辣您将同意我的观点。本书分为4个部分。第1部分,介绍了 Window及MFC编程的主要原则,以一个示例程序“Hll,MFC开始,然后逐一简要讲解菜单、控件、对话框以及其他用于组建应用程序的模块。第2部分,在第1部分的基础之上,对文档视图结构做详细讲解,特别是第9、10、11章,揭示了实现文档视图的神奇之处,不仅介绍了如何编写简单的文档视图程序,而且教您些高级功能,如打印预览和拆分窗凵视图。第3部分涵盖了一些 Windows和MFC的更高级的功能,如额色选项板、位图句柄及多线程程序。在第4部分,您将了解到MFC如何包容COM OLE和 ActiveX,如何编写支持COM的组件及应用程序。在读完第2l章之后,您将更加精通使用MFC进行 windows32位编程的技术。您乜将拥有丰富的源代码用于您的第序言·3个 Window应用程序第2版的新特点读过本书第1版的朋友将会注意到第2版的两个相当明显的变化。首先,本版包括7个新章节,1章用于讲解MFC视图类,1章涵盖MFC集合类;1章介绍MFC文件LO和串行化机制,4章讨论了MFC和COM的关系。MFC不是类似活动模板库ATI)的通用COM框架,但是MFC使编写某些COM程序更容易,使编写 ActiveX控桦的过程更简单,而且它使编写自动化( Automation服务器程序(使用cOM技术来供脚本客户调用的程序)变成了件轻而易举的事。第2版的主要变化是关于向导的知识,在第1版中并没有提到向导。在第2版中1-3章使用手写的示例程序,但到了第4章就使用 App wizard和 Class wizard来生成代码。这样做的原因是,我始终认为代码生成向导会影响MFC的学习,它只应由老练的程序员来使用。但我也逐渐认识到,实际卜,有很多MFC程序员在使用MFC向导来做某些工作,如编写Activex控件,在此时不用向导是很不明智的。经过深思熟虑之后,我决定加上这些内容尽管这些新内容是关于向导的使用,然而它现在不是,以后也不会是一本仅仅介绍如何在向导中单击按钮的书。在介绍了一个像如何用 Class wizard编写消息句柄之类的基本技巧之后,我在给出代码时,将不再赘述这些内容。当然,向导永远不能超越您的能力去做任何事,因此锥入所有手写的代码是完全可行的。在讲述MFC编程的书中使用向导的缺点是,向导生成的程序不适合发表。本书的第版印刷了每个程序文件的代码。本版书没有这样做,而只是包括了“相关”的源代码文件,其他的都放在CD-ROM中,为什么?因为印刷这些代码会使本书增加一倍的厚度而没有相应增加内涵。其中一些代码是由 Visual o++6.0的MFC向导产生的,甚至没有被编译(详细内容请参见第4章)。我并不为本书中向导生成的代码而得意,因为其中充斥着随意生成的空行、不连贯的注释和无用的函数。对郑些以编写清晰易读的示例源代码为骄傲的作者来说,向导生成的东西是-剂苦药然而,向导代表了 Windows编程的新法则.它们是你、我及所有人必须习惯的重要事物。但令人遗憾的是,Ⅴ Visual c++开发小组没有给我们一个真正的向导,而只是一个冒充向导的玩具。在他们能够做到以前,我们得习惯现有的向导。CD-ROM中的内容本书随附的CD-ROM包括书中仝部示例程序的源代码,它们都在Ⅵ issac++6.0和MFC6.0环境下编写、编译而成,并在Wn32平台上测试通过。如果没有特别说明它们都与Windows98、 Windows nt4.0 Windows2000兼容,其中大部分也与 windows95及 Windows4· MFC Windows程序设计(第2版)ⅥT3.51兼容。您可用 CD-ROM的根目录下的安装程序来将 CD-ROM中的内容复制到硬盘里,也可只复制其中Code目录中的代码。我们在此目录中为书中每章各建了一个,目录-—Chap01、Chap02,依次类推。在这些子目录中存放示例程序。每个程序的源代码文件都有一个相应的发布版本的EXE文件,以及您可使用 Visual c++的 Open Workspace命令来打开的workspace(DSW)文件致读者自从1995年我开始写本书的第一版以来,我的日标就是为C++程序员亏出一本可与为C程序员所写的永恒的、无出其右的 Programning Windows相媲美的好书。但是否达到了此目的,只能由您来判断。我想知道您对于本书的看法,而且特别希望您能从本书中发现错误。您可以通过电子信箱jlpo@msn.com或访问我的站点ww.pmie.om来与我联系。此站点提供关于本书的最新信息、勘误表及我正在写的其他书的信息。今年年底,我将把关于 MFC DLL新一章的内容放到网站上,供大家阅览并在线发表评论。今天的书店中有大量的计算机图书在吸引读者的注意力,我相信您可以选择除了本书之外的任意一堆计算机书籍。我在此衷心地感谢您购买本书,并希望您能觉得它物有所值。祝读书快乐!Jeff Prosise1999年3月12日目录鸣谢序亨………….4NPSPR9N9N4P414第Ⅰ部分 Windows和MFC基础第1章Hell,MFC1.1 Windows编程摸型………鲁+,香4甲P平平日干4甲,11.1消息,消息,还是消息……………11.2 Windows程序设汁,SDK风格…………61.1,3匈牙利杯记法和 Wiadows数据类型1.1.4SDK程序设计展望……………………………""…"……1,2MFC简介…………pD日,卡12.1使用C++和MFC的好处…1.2.2MFC的设计思想……■td曲DD口1.23文档/视图体系结构.2,4MFC类的分层结构…12上25AFX函数………………鲁平平313您的第一个MF应用程序1313,1应用程序对象163.2MFC奶何使用应用程序对象……………………1813.3框架窗口对象18绘制窗口1.3,5消息映射…r:F+“““h幽曲■■曲·■1,1.3.6消息映射的工作方式1,3,7 Window、字符集和T宏…261.3.8建立应用程序13.9小结“*·.··a“……"+“"∵“”……29算2章在寓口中绘图中,·:‘·卡·钾2.1 Windaws GDI2.L,IMFC设备描述表类1.2设备描述表属性………2.1,3绘图模式目录鸣谢序亨………….4NPSPR9N9N4P414第Ⅰ部分 Windows和MFC基础第1章Hell,MFC1.1 Windows编程摸型………鲁+,香4甲P平平日干4甲,11.1消息,消息,还是消息……………11.2 Windows程序设汁,SDK风格…………61.1,3匈牙利杯记法和 Wiadows数据类型1.1.4SDK程序设计展望……………………………""…"……1,2MFC简介…………pD日,卡12.1使用C++和MFC的好处…1.2.2MFC的设计思想……■td曲DD口1.23文档/视图体系结构.2,4MFC类的分层结构…12上25AFX函数………………鲁平平313您的第一个MF应用程序1313,1应用程序对象163.2MFC奶何使用应用程序对象……………………1813.3框架窗口对象18绘制窗口1.3,5消息映射…r:F+“““h幽曲■■曲·■1,1.3.6消息映射的工作方式1,3,7 Window、字符集和T宏…261.3.8建立应用程序13.9小结“*·.··a“……"+“"∵“”……29算2章在寓口中绘图中,·:‘·卡·钾2.1 Windaws GDI2.L,IMFC设备描述表类1.2设备描述表属性………2.1,3绘图模式6· MFC Windons程序设计(第2版)2.1.4陕射模式………………………………………2.1.5可编程映射模式2.16坐标转换……………………………402.1.7移动原点………………………………++…∷412.1.8坐标系小结…··::+":F·"·2.1.9获取设备借息…-…………………………+………………422.2用CD!绘图22.1直线和曲线2.2.2画椭圆,多边形以及其他形状1t曲■22,3CDI笔利CPn类……224Gm画刷和 CBrush类学一532,2,5画文本…++“…………562.26GDI字体和CFnt类…h444s7227光栅字体与 Truetype亨体2.2旋转文本…十會P曾、““““““““B4十十十导+.=:ab面602.9备用对象…2.2.10删除GDⅠ对象……32.11取消对GD象的选定……+,Pd◆■22.12标尺应用程序2.3看看画了些什么…2.3.1给窗口添加滚动条…幅画画|4p232设定滚动条的范围、位置和页面大小……………2.3.3使滚动条滑块大小和窗冂尺寸同步变化…导、23.4处理滚动条消息……………--1#;“aaa41·,■■t23.5滚功窗口23.6 Accel应用程序2.4遗留问题…………第3章鼠标和键盘…85即中3,1从鼠标获取输入…卡、,甲““···3.1.】高户区飘标消息…3,1,2TT应程序3,13非客户区鼠标消息…………………………·“44■甲自十卡41053.1.4 M NCHITTEST消息…3.15WMM0 USELEAVE和 WM MOUSEHOVER消息……108…103.16鼠标滚轮………1123,!7捕获鼠标…………3.1.8鼠标捕获的应用……1131193,19光标………………
暂无评论