`
phinecos
  • 浏览: 339974 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[转]VC++技术内幕(第四版)笔记(1~2章)

 
阅读更多

/***************************************/
第一章:Microsoft Windows Visual C++

1Windows应用程序中一定要有WinMain函数,用来完成某些特殊的任务,其中最主要的是创建应用程序的主窗口。

2DOS下,所有程序的目标模块在创建过程中都被静态连接起来。而Windows允许动态连接,即一些特定结构的库(DLL)可以在运行过程中被装入和连接,并且被多个应用程序共享。

3,项目是一些相互关联的源文件的集合,这些源文件经过编译、连接,然后被组合在一起形成可执行的Wwindows应用程序或DLL

4,几个重要Developer Studio创建的中间文件:
CLW
(支持ClassWizard DSP (项目文件)
DSW
(工作空间文件)NCB (支持ClassView)
OPT
(保持工作空间的配置)PLG (建立日志文件)

5AppWizard是一个代码生成器,它会按照用户通过对话框指定的特性、类名、及源代码文件名来产生Windows应用程序工作架构。AppWizard所产生的代码只是一些最基本的代码,它完成的功能完全由应用程序的基类所决定。

/**************************************/
第二章:Microsoft基本类库应用程序框架



1,按照惯例,MFC库类名用大写“C”打头。

2 CMyApp的对象theApp就代表一个应用程序。当运行该应用程序的时候,WINDOWS自动调用程序框架内部的WinMain函数, WinMain函数会去查找该应用程序的全局构造对象(theApp),该对象是有CWinApp类派生类的对象。C++中,全局对象在主程序被运行之前 就已经构造好了。

3,当WinMain发现该应用程序对象(theApp)时,会自动调用虚拟成员函数CWinApp:: InitInstance(),该函数会进一步调用相应的函数来完成主窗口的构造和显示工作。由于基类CWinApp中不知道我们实际需要的什么样的窗 口,所以我们必须在派生出的应用程序类CMyApp中重载InitInstance()函数(CMyApp::InitInstance()),由多态 性,当调用CWinApp::InitInstance()时候,会自动转向MyApp::InitInstance().

4WinMain函数调用完InitInstance()函数后,就调用CWinApp::Run函数,CWinApp::Run函数被隐藏在基类中负责传递应用程序的消息给相应的窗口,从而维护应用程序的运转。

5,关闭应用程序(对单一框架程序来说),首先CMyFrame 对象被删除,然后退出Run,进而退出WinMain,最后删除CMyApp对象(theApp)。

6,一些Windows类库在基类为鼠标事件消息以及其他一些标准消息定义一些虚函数,如果需要,派生类会对这些函数进行重载。
MFC
库应用程序框架没有采用虚函数来处理Windows消息,而是通过一些宏来将特定的消息映射到派生类中相应的成员函数上。(原因:P21C++类对程序 中用到的每一个派生类都要求有一张虚函数分发表VTABLE,BTABLE中每个虚函数都需要有一个4字节的入口项,而不管该函数会不会在派生类中被重 载。)
MFC
消息控件函数要求提供函数原型,函数体,以及在消息映射中的入口。

7,文档-视图结构将数据从用户对数据的观察中分离出来,这样就允许对同一数据可以有多个视图。
MFC
库应用程序中,文档和视图是由C++类的实例来描述的。
文档基类代码通常和FILE OPENFILE SAVE菜单项关联,而派生文档类则一般用来完成对文档对象数据的实际读写工作。
视图基类通常表示一个包含于框架窗口中的窗口,而派生视图类则常用来和稳当类相联系,负责应用程序的显示和打印机I/O
派生视图类及其基类共同处理WINDOWS的消息,而MFC库则协调文档,视图,框架窗口,以及应用程序之间的相互作用关系,这种协调多用虚函数来实现。
文档对象既可以与一次可全部读入内存的磁盘文件相关联,也可以同数据库相关联。

分享到:
评论

相关推荐

    vc++技术内幕第四版(清华版)学习笔记

    vc++技术内幕第四版(清华版)学习笔记 经典

    VC++技术内幕-学习笔记

    我看的『VC++技术内幕』版本为--潘爱民和王国印译清华大学出版的第四版,因从网上看到此版译的最好。 这篇学习笔记是后补的,因为这本书我已经看到了第三十二章,之前并没有做笔记,只是随意的在书上画了画重点,...

    VC++技术内幕(第四版)笔记

    VC++技术内幕(第四版)笔记

    VC++技术内幕(第四版)笔记

    VC++技术内幕(第四版)笔记:自己学习的经验 以及学习步骤……

    VC++技术内幕-学习笔记

    『VC++技术内幕』版本为--潘爱民和王国印译清华大学出版的第四版,因从网上看到此版译的最好。 这篇学习笔记是后补的,因为这本书我已经看到了第三十二章,之前并没有做笔记,只是随意的在书上画了画重点,可是越...

    『VC++技术内幕』学习笔记

    『VC++技术内幕』版本为--潘爱民和王国印译清华大学出版的第四版

    『VC++技术内幕(潘爱民)』学习笔记

    我看的『VC++技术内幕』版本为--潘爱民和王国印译清华大学出版的第四版,因从网上看到此版译的最好。 这篇学习笔记是后补的,因为这本书我已经看到了第三十二章,之前并没有做笔记,只是随意的在书上画了画重点,...

    VC++技术内幕 学习笔记

    第四篇:资源和编译 第五篇:基本事件处理 第六篇:映射模式 第七篇:图形设备接口(GDI) 第八篇:颜色和字体 第九篇:模式对话框和通用控件(上) 第十篇:模式对话框和通用控件(下) 非常好的学习笔记,...

    『VC++技术内幕』(第四版)读书笔记

    Windows程序中必须要有WinMain函数,因为该函数最重要的任务是创建该应用程序的主窗口。Windows程序与基于MS-DOS程序的最大差别就在于:MS-DOS程序是通过调用操作系统的功能来获得用户输入的,而Windows程序是通过...

    vc技术内幕 学习笔记

    潘爱民和王国印译,清华大学出版的第四版『VC++技术内幕』的牛人学习笔记

    vc技术内幕学习笔记WORD

    我看的『VC++技术内幕』版本为--潘爱民和王国印译清华大学出版的第四版,因从网上看到此版译的最好。 这篇学习笔记是后补的,因为这本书我已经看到了第三十二章,之前并没有做笔记,只是随意的在书上画了画重点,...

Global site tag (gtag.js) - Google Analytics