浅析 MFC 程序基本运行机制
或许我不该写这篇文章;或许你会不屑的看了看标题,然后华丽的 WS 之;又或许你会在看完之后,在
这篇文章的末尾的写上“打倒 KC,打倒 MFC,打倒 M$”,然后签上自己伟大的名字。
但是这都丝毫不会影响包括我在内的所有想了解 MFC 的 Coder 对于 MFC 研究。或许,有好几个问题曾
连续地在你的脑海里浮现:
MFC 很容易学么?是的,很容易。但是前提是你首先得理解他的源代码,并且看懂背后的故事。
MFC 很复杂么?是的,以 MFC4.X 来说,仅是一个单独的源文件都有超过 120000 行的代码,这还不 算头
文件和.H 扩展文件。
MFC 很强大么?是的,它不仅能让你更加了解 Windows 系统的运行机理,还能让你从传统 SDK 的束缚
中解脱出来。
MFC 很恶心么?是的,它会时常让你感到,不是你在控制 MFC,而是 MFC 在控制你
MFC 很完美么?没有完美的思想,也没有完美的程序。从产生人类文明至今,尚未出现真正称得上“完
美”的东西。因为我们在进步,在革命。
……
常言道:知己知彼,百战不殆。如果你真的决定使用 MFC,那么你就应该好好的研究它的内部运行机制。
这不是关键性的,但是是必要性的。
而这篇文章,就向大家展示了 MFC 程序的基本运行机制。
1. 温故知新
在研究 MFC 的基本运行机制之前,先让我们来回忆一下使用 C++/SDK 写 Windows GUI 程序的顺序:
调用 WinMain 入口函数→注册窗口类→窗口实例化→建立消息循环→处理消息
可以说,几乎每个 Windows GUI 程序的建立和运行,都要经过上面的几个步骤,MFC 程序也不例外。但
是由于 MFC 是以 C++为基础,所以它势必会使用 OOP 思想进行架构。而这一切,都会导致我们研究 MFC
的方式会和 C++/SDK 有那么一点区别。
我们在下面会以 MFC 的 Class 为中心进行研究,而非 Windows 窗体的线性行为。这意味着我们得忍受在
几个类中跳来跳去。是的,你可能会感到身体不适,我同样有这种感觉,我从小就恨透了 goto……
那么,就让我们先来看看使用 MFC 改如何创建一个简单的窗体,然后在逐步抽丝剥茧,剖析 MFC 程序
的基本运行机理。
/**************************************************
** Project:MFCAppUser
** File:MFCAppUser.cpp