MFC Windows程序设计(第二版)精华浓缩笔记

原创 2005年05月21日 01:10:00
《MFC windows程序设计(第二版)》是一本介绍使用MFC(而不是win32 API),进行32位Windows应用程序设计的经典书籍。作者Jeff Prosise,被誉为MFC领域的Petzold。作者在前言中写道:“我的目标就是为C++程序员写出一本可与为C程序员所写的那本永恒的、无出其右的《Programming Windows》相媲美的好书。”
       这本书与众不同之处在于它不以Appwizard向导建立程序开始,而是直接使用MFC类库,利用各类之间的耦合自建程序,比起其他(尤其是千篇一律的国内)书籍来,能给人耳目一新的感觉。
       我是在学校图书馆发现这本书的,当时的感觉是:妈的,人生的大起大落,真是太刺激了。怎么也没想到在那一堆老古董里还有这么新的经典。
       我希望能用一个暑假搞定它,学完每一章,我都会把读书笔记和一些自己的想法写个文档放上来,希望能给没我幸运的各位网友一些帮助。
       因为“每天你都有机会跟别人擦身而过,你也许对他一无所知,不过也许有一天他会变成你的朋友或是知己。”,希望大家支持。 


第一章、Hello MFC

精华浓缩:
    我们大家都知道每一个Windows程序都以一个Winmain()开始,MFC的当然不例外。但在MFC中,它被隐藏了起来。MFC定义了一个全局应用程序对象(姑且称其为theApp),而每一个全局对象都是在主程序进入点(EntryPoint)之前由启动代码构造完成的。换句话说,程序在进入Winmain()之前,内存中将有了一个theApp对象。这样,theApp的成员函数就可以为我们所用了。也就是这时,Winmain()出场了...  
    Winmain()首先调用theApp(就是应用程序类)的成员函数InitInstance()虚函数(要覆盖),构造主窗体,并显示更新,之后再调用Run()(一般不要覆盖),就进入消息循环。  
    在SDK程序设计时,消息总是以调用一个窗口的窗口过程(WndProc())来表明自己的存在。同时与此调用相伴随的通常是四个参数:消息所指窗口句柄、一个消息ID和两个名为wParam和lParam的32位参数。后两个参数值依消息不同而异。而在MFC中,消息映射取代了窗口过程作为消息与其处理之间的通讯接口。
    从CCmdTarget派生的任何类都可以包含消息映射。消息映射是一个将消息与其处理函数(作为类的成员函数)相互关联的表。它是MFC避免使用冗长的虚函数表(VTable)的一种方式(试想,如果每一个进入内存中的类有一个虚函数表,则每一个类对象实例就都要有一个指针VPointer(4字节)指向那个表,这个内存消耗是没法估量,也是多余的)。MFC用三个宏就解决了问题。
    因此,将一个消息映射添加到一个类中,要做三项工作:
    1)通过将DECLARE_MESSAGE_MAP语句添加到类声明中,声明消息映射;
    2)通过放置标示消息映射起止的宏执行消息映射,相应的类将在对BEGIN_MESSAGE_MAP和END_MESSAGE_MAP的调用之间消息和其处理函数;
    3)添加成员函数定义处理消息。
    关于消息映射工作机制的情况,有兴趣的网友可以参考《深入浅出MFC》,那里讲的很详细。
    这本书也提供了自建Windows程序的方法,在New-Project中选Win32 Application,再在接下来的窗口中选A Empty Project。进入主环境之后,再用Project-Add To Project添加文件即可。编译之前,记着把编译选项改为Use MFC In A Shared DLL。

一些知识点:
1)匈牙利标记法:在每个变量名之前,用一个或多个小写字母标识变量类型。同时成员变量以m_开头。如m_strWndClass,m_表示这是个类数据成员,str表示这是类型为CString类的变量。常用类型前缀:b-BOOL,h-Handle,n-Int,l-long Int等。
2)文档/视图结构:使数据和数据的表现相分离,以简化程序设计的一种程序结构,后有章节详述。
3)CObject:大多数MFC类从CObject中直接或间接派生,它为其派生类提供了三个重要特性:序列化支持;运行期类型信息;诊断与调试支持。
4)Afx函数:Afx是Application Framework的简写,以Afx开头的函数都是全局函数,可以在任一个类实现中调用。典型的如AfxMessageBox()、AfxGetApp()等。
5)_T宏:用来将字符串常量字符设置为“中性”。这样不管是ANSI字符集还是Unicode,字符串都将与系统无关。关于_T的详细信息,作者建议阅读Jeffrey Richter的《Advanced Windows》或MSDN。

MFC Windows程序设计(第二版)精华浓缩笔记

      《MFC windows程序设计(第二版)》是一本介绍使用MFC(而不是win32 API),进行32位Windows应用程序设计的经典书籍。作者Jeff Prosise,被誉为MFC领域...
  • c_vector
  • c_vector
  • 2002年06月28日 13:48
  • 2488

MFC Windows程序设计源码免费下载

本人最近在网上找到了《MFC Windows程序设计》第二版的书内程序的源码,特意上传CSDN上面,供学习MFC的程序员们免费下载。...
  • BBOOT
  • BBOOT
  • 2014年06月12日 19:03
  • 1297

lua程序设计第二版 读书笔记(9-10章)

书本下载地址                       http://download.csdn.net/detail/myy2012/5349646 本部分下载地址             ...
  • myy2012
  • myy2012
  • 2013年05月10日 15:44
  • 1067

《java语言程序设计》(第二版)——笔记(一)

作者:郎波     出版社:清华大学出版社         第一章   绪论 1.java语言特点:简单,面向对象,分布式,解释型,强壮,安全,体系结构中立,可移植,高性能,多线程,动态。 简单:去掉...
  • sunset91
  • sunset91
  • 2013年11月21日 20:58
  • 779

MFC Window程序设计(第二版)精华浓缩笔记(三)

第三章、键盘和鼠标精华浓缩:    键盘和鼠标恐怕是用电脑的人摸的最多的两样东西(当然,DIYer们除外),也正因为有很直观的印象,要理解它们并不难。       在windows中,键盘和鼠标输入是...
  • c_vector
  • c_vector
  • 2002年07月09日 16:20
  • 1774

MFC Window程序设计(第二版)精华浓缩笔记(二)

各位,看一看,瞧一瞧,新出炉的...大拍卖喽!第二章、在窗口中画图精华浓缩:         Windows中负责图形输出的是GDI(即Graphic Device Interface,图形设备接口)...
  • Ninth
  • Ninth
  • 2005年05月21日 01:11
  • 1898

MFC Window程序设计(第二版)精华浓缩笔记(二)

各位,看一看,瞧一瞧,新出炉的...大拍卖喽!第二章、在窗口中画图精华浓缩:         Windows中负责图形输出的是GDI(即Graphic Device Interface,图形设备接口)...
  • c_vector
  • c_vector
  • 2002年07月04日 10:00
  • 1868

《Erlang 程序设计》练习答案 -- 第八章 顺序编程补遗

% (1).复习这一张关于Mod:module_info()的部分。输入命令dict:module_info()。这个模块返回了多少函数?% (2).code:all_loaded() 命令会返回一个...
  • wwh578867817
  • wwh578867817
  • 2015年11月16日 15:58
  • 628

MFC Windows程序设计(第二版)第一章笔记

第一章 Hello MFC       我们大家都知道每一个Windows程序都以一个WinMain()开始,MFC的当然不例外。但在MFC中,它被隐藏了起来。MFC定义了一个全局应用程序对...
  • doctorwing
  • doctorwing
  • 2011年09月06日 21:15
  • 726

MFC Windows程序设计(第2版)(附源码)

又名: Programming Windows with MFC Second Edition 译者: 北京博彦科技发展有限公司作者: (美)Je...
  • manybooks
  • manybooks
  • 2009年10月28日 15:15
  • 855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC Windows程序设计(第二版)精华浓缩笔记
举报原因:
原因补充:

(最多只允许输入30个字)