Afx前缀是微软MFC的Application Framework技术团队的名称简写,"X"没有什么意义,是比较流行的结尾字符,如activex等。
这个小组最初的宪章是要"utilize the latest in object oriented technology to provide tools and libraries for developers writing the most advanced GUI applications onthemarket",其中并未画地自限与Windows操作系统有关。果然,其第一个原型产品,有自己的窗口系统、自己的绘图系统、自己的对象数据库、乃至于自己的内存管理系统。
当小组成员以此产品开发应用程序,他们发现实在是太复杂,又悖离公司的主流Windows系统太遥远。于是他们修改宪章变成"deliver the power of object-oriented solutions to programmers to enable them to build world-class Windows based applications in C++." 这差不多正是Windows 3.0异军崛起的时候。
以afx开头的函数不能说是MFC的全局函数,而是MFC的类函数。当初这个小组打算建立一个可以跨linux和windows平台的设计软件,结果失败了,遗留了大量的函数以afx命名,最终用类的概念建立了MFC的框架,所以现在MFC之中有很多afx函数,这些函数可以用API函数替代。AFX小组预期MFC的使用者不可能人人皆为C++专家,所以他们并没有采用所有的C++高阶性质(例如多重继承)。
MFC的很多代码,包括全局函数名、宏、头文件名都使用了"Afx"。
Afx*.h是一组MFC的核心头文件,比如:
afxwin.h 定义MFC的核心和标准组件
afxext.h 定义MFC的扩展
afxdisp.h 是MFC自动化支持的类定义头文件
afxdb.h 是MFC的ODBC类封装