学习MFC深入详解_李久进——Demo1

MFC的宏观框架体系:

       MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。

CWinApp->CTapp , CDocument->CTDoc, CView->CTView, CMDIFrameWnd->CMainFrame,CMDIChildWnd->CChildFrame

应用程序对象,文档对象,视对象,主框架窗口对象(视窗口,工具条和状态栏)和文档边框窗口对象。

     文件预编译将Project中使用的一些MFC标准头文件预先编译,以后不再编译该部分头文件,直接使用预编译的结果。预编译头文件通过编译stdafx.cpp生成,以工程名命名。

      编译器认为,所以在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx.h"指令,使用projectname.pch编译这条指令之后的所有代码。

MFC Object 和 Windows Object的区别:

数据结构:

      MFC Object是相应C++类的实例(是MFC或程序员定义);Windows Object 是Windows系统的内部结构,通过一个句柄来引用;

MFC给类定义了一个成员变量来保存MFC Object对应的Windows Object的句柄。

层次:

      MFC Object是高层的,Windows Object是低层的;MFC Object封装了Windows Object的大部分或全部功能,MFC Object的使用者不需要直接应用Windows Object的HANDLE使用Win32 API,代替它的是引用相应的MFC Object的成员函数。

创建:

     MFC Object通过构造函数由程序直接创建;Windows Object由相应的SDK函数创建。

首先创建MFC Object,或在STACK中创建,或在HEAP中创建,MFC Object的句柄实例变量为空,或不是一个有效的句柄。然后调用MFC Object的成员函数创建相应的Windows Object,MFC的句柄变量存储一个有效句柄。

转换:

使用范围:

MFC Object对系统的其他进程来说是不可见、不可用的;而Windows Object一旦创建,其句柄是整个Windows系统全局的。典型:一个进程可以获得另一个进程的窗口句柄,并给该窗口发送消息。对同一个进程的线程来说,只可以使用本线程创建的MFC Object,不能使用其他线程的MFC Object。

销毁:

MFC Object随着析构函数的调用而消失;但Windows Object必须由相应的Windows系统函数销毁。设备描述表CDC类的对象有所不同,其对应的HDC句柄对象可能不是被销毁,而是被释放。

 

Windows Object

用SDK的Win32 API编写Windows应用程序的共同规律:

编写WinMain函数——编写处理消息和事件的窗口过程WndProc,在WinMain里头注册窗口(Register Window),创建窗口,然后开始应用程序的消息循环。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页