08 MFC - MFC框架中一些重要的函数

1. InitInstance函数

08 MFC - MFC框架中一些重要的函数
应用程序类的一个虚函数,MFC应用程序的入口。

2. PreCreateWindow函数

08 MFC - MFC框架中一些重要的函数
当框架调用CreateEx函数创建窗口时,会首先调用PreCreateWindow函数。

通过修改传递给PreCreateWindow的结构体类型参数CREATESTRUCT,应用程序可以更改用于创建窗口的属性。在产生窗口之前让程序员有机会修改窗口的外观。

最后再调用CreateWindowEx函数完成窗口的创建。

3. OnCreate函数

08 MFC - MFC框架中一些重要的函数
OnCreate是一个消息响应函数,是响应WM_CREATE消息的一个函数,而WM_CREATE消息是由Create函数调用的。一个窗口创建(Create)之后,会向操作系统发送WM_CREATE消息,OnCreate()函数主要是用来响应此消息的。

OnCreate与Create的区别:

  • Create()负责注册并产生窗口,像动态创建控件中的Create()一样,窗口创建之后会向操作系统发送WM_CREATE消息。
  • OnCreate()不产生窗口,只是在窗口显示前设置窗口的属性如风格、位置等。
  • OnCreate()是消息WM_CREATE的消息响应函数。

4. OnDraw和OnPaint

08 MFC - MFC框架中一些重要的函数
OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。

OnPaint() 是CWnd的类成员,负责响应WM_PAINT消息。
OnDraw() 是CView的成员函数,没有响应消息的功能。

当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理函数通过创建CPaintDC类的DC对象来响应该消息并调用视图的OnDraw成员函数。OnPaint最后也要调用OnDraw,因此一般在OnDraw函数中进行绘制。

通常我们不必编写OnPaint处理函数。当在View类里添加了消息处理OnPaint()时,OnPaint()就会覆盖掉OnDraw()。

5. 其它

MFC中后缀名为Ex的函数都是扩展函数。

在MFC中,以Afx为前缀的函数都是全局函数,可以在程序的任何地方调用它们。