以afx开头的变量几乎都是全局变量,
afx_msg void OnBnClickedBtnCancel();这个呢
https://blog.csdn.net/luxuejuncarl/article/details/2618805
是MFC小组早期的代号,AFX,当时是指 applecation freamwork ,如果你的程序用到了MFC,那这个头文件是一定要包含的。
Microsoft的程序员开始试图将C++和面向对象的编程概念应用于Windows编程中,经编写出一个可以使windows编程工作更加简便的应用程序框架。他们把这个应用程序框架叫做AFX(AFX这个词来源于Application FrameWork,但奇怪的是这个词组中并没有包含"X"这个字母)。直到今天,AFX小组早已不存在了,AFX这个名称也于1994年初不再使用,但在Visual C++和MFC中,AFX的影子却随处可见,很多全局函数、结构和宏的标识符都被加上了AFX的前缀。
关于afx这个词的意思tasehouny(阿甘)说的是对的 afx.h是VC里的预编译头,比如说你有十个CPP文件 每个都include了windows.h,结果windows.h就会被编译十次 要知道windows.h是很大的,编译起来很慢 这个时候你就可以在afx.h里加一句#include <windows.h> 然后afx.h连同里面所有的include会被编译成一个PCH文件 这样编译十个CPP的时候都直接拿这个PCH文件来用 不用重复编译了,速度提高很多 如果你在建立项目的时候选了预编译头支持(缺省是有), 就必须在每个CPP的第一行加上#include "afx.h"
在九十年代初的时候OO被炒得很热,许多人以为OO是无所不能的 微软也这么认为,所以他们想搞出一套类库来封装全部的OS特性 使得程序可以在WINDOWS OS/2 X等等任何的GUI系统上运行 结果可想而知,这个东西当然是没做出来 到94年微软放弃了AFX,把AFX中已经完工的部分做了一点改进 形成了MFC 至今MFC还有LINUX版本,也算是AFX计划的一点残留吧
![](https://i-blog.csdnimg.cn/blog_migrate/3734fe6ecb68e033b3546aa070b06919.jpeg)