一、V++、VC++和MFC各是指什么概念?有什么关联和区别?
V++没听过(C++是个计算机语言标准,但并非C++编译器,它只是C++语言的语法、函数标准)
VC++是Microsoft的一款C++ IDE,能很好的支持MFC
MFC是一款应用程序框架(为VC++使用)
区别:
C++是一种语言,但是不是编译器,它只是一种标准。
VC++只是IDE,它包含了MS C++编译器,允许你直接输入代码一键编译执行
MFC是一款应用程序框架,它只是一堆lib、dll库,和一些头文件。
二、MFC中 这么多的函数 如何知道这么调数的调用顺序
对于windows编程,其入口函数是WinMain函数,在一个直接用WinMain函数编写的窗口程序中(非MFC编程),都是先定义一个窗口类,注册窗口类,然后用这个窗口类创建一个窗口,最后进入消息循环。不清楚这个过程的话,就看孙鑫C++教程第1课。
在MFC程序中,窗口类的创建,注册和显示以及消息循环的建立都是MFC类自动完成的,我们要做的主要就是完成消息处理。比如在一个对话框窗口程序中,我们在对话框类中可以添加消息预处理函数PreTranslateMessage();鼠标右键消息OnRButtonDown();还有窗口创建后的消息OnCreate();等等,这些都是消息映射函数(PreTranslateMessage()不是),而真正的消息循环则被MFC隐藏了,高级一点的可以自己写一个。(参看孙鑫教程第3课,我第二次才看懂,所以不懂也不要着急,影响不大)
MFC中消息循环也很复杂, 这里有详细教程。
至于VC++的源码,最好不要直接阅读,要先运行程序,看他实现了什么功能,再有针对性的看对应功能的代码。
三、求简述MFC,STL,API之间的关系~
MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一。所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象;所谓MFC Object (MFC对象)是C++对象,是一个C++类的实例,这里(本书范围内)MFC Object是有特定含义的,指封装Windows Object的C++ Object,并非指任意的C++ Object。
MFC Object 和Windows Object是不一样的,但两者紧密联系。以窗口对象为例:
一个MFC窗口对象是一个C++ CWnd类(或派生类)的实例,是程序直接创建的。在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。Windows窗口在MFC窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。
STL = Standard Template Library,标准模板库,惠 普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什么。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。