MFC学习之程序运行过程梳理

来源:互联网 发布:天刀捏脸详细数据 编辑:程序博客网 时间:2024/04/30 23:24

*首先利用全局变量对象theApp启动应用程序。这是因为这个全局对象,基类CWinApp中this的指针才能指向这个对象。如果没有这个全局对象,程序在编译时不会出错,但在运行时就会出错.

*调用全局应用程序对象的构造函数,从而就会先调用其基类CWinApp的构造函数。后者完成应用程序的一些初始化工作,并将应用程序对象的指针保存起来。

*进入WinMain函数。在AfxWinMain函数中可以获取子类(对Test程序来说就是CTestApp类)的指针,利用此指针调用虚函数:InitInstance,根据多态性原理,实际上调用的是子类(CTestApp)的InitInstance函数。后者完成应用程序的一些初始化工作,包括窗口类的注册,创建,窗口的显示和更新。期间会多次调用CreateEX函数,因为一个单文档MFC应用程序有多个窗口,包括框架窗口.工具条.状态条等。

*进入消息循环,虽然也设置了默认的窗口过程函数,但是,MFC应用程序实际上是采用消息映射机制来处理各种消息。当收到WM_QUIT消息时,退出消息循环,程序结束。


4类画线绘图:

1.SDK全局函数实现画线功能.

2.CDC类实现画线功能.

3.CClientDC实现画线功能

4.CWindowDC实现画线功能.


GetParent()获取基类指针 视窗口的父窗口就是框架窗口.


利用SelectObject函数可以实现把GDI对象选入设备表,它才会在以后的绘制操作中生效。并且该函数会返回指向先前被选对象的指针。这主要是为了再完成当前绘制操作后,还原设备描述表用的。


静态成员函数:静态成员函数和静态成员变量属于类本身,在加载的时候,即为它们分配了空间,所有可以通过类名::函数名或类名:变量名来访问。而非静态成员函数和非静态成员属于对于的方法和数据,也就是应该首先产生类的对象,然后通过类的对象去引用.

0 0
原创粉丝点击