关于afx的由来

MFC的历史  
    
      开始,Microsoft建立了一个AFX小组,AFX代表Application   Framework,即应用程序框架。据说创建该小组原意是为了发布一个Borland   C++的OWL的竞争性产品,因为那时侯Borland   公司的应用程序框架OWL(object   Windows   Language)已经做的相当成功。AFX小组象OWL那样,提出了一个高度抽象Windows   API的一个类库。  
    
      他们采用自顶向下的设计方法,逐步将对象抽象出来,并施加到Windows上。然后,他们试着花了几个月时间用这个类库来编写应用程序,结果发现这个类库偏离Windows   API实在太远,过分抽象并没有太大的实用性,相反大大降低了应用程序的效率。  
    
    于是,他们干脆放弃了整个AFX类库,对类库进行重新设计。这次,他们采用了自底向上的方法,从已有的Windows   API着手,将类建立在Windows   API对象基础上,设计出后来成为MFC1.0的一个类库。但是,你现在仍然可以看到AFX时期的痕迹,许多源程序文件有afx前缀,如afxabort.cpp,afxmem.cpp。MFC延用了许多AFX类库的宏,因此我们经常会看到以AFX开头的宏。  
    
        AFX小组实际上做了两件工作:MFC类库和对MFC的IDE支持(即资源编译器和操作向导)。在1994年4月份之后,AFX的名字停止使用,该小组成员成为Visual   C++开发组的一部分,即现在的MFC小组。  
        MFC1.0版于1992年同Microsoft   C/C++7.0同时发布。它提供了对Windows   API简单的抽象和封装,还没有我们现在常用的文档/视结构特性。但它引入了CObject,通过CArchive的持续化和其他一些MFC中仍然使用的特性,从而奠定了MFC的基础。  
### AFX 的定义及其在 IT 技术中的应用 AFXMicrosoft Foundation Class (MFC) 库中的一个重要组成部分,主要用于简化 Windows 图形用户界面开发以及多线程编程的任务。以下是关于 AFX 的详细介绍: #### 1. AFX 的基本概念 AFXMFC 中的核心模块之一,代表的是 **Application Framework Extensions** 或者更广泛地理解为与应用程序框架相关的扩展功能集合。它提供了许多用于构建复杂 GUI 和处理底层操作系统的工具和方法。 - 在图形界面方面,AFX 提供了一系列宏和函数来支持窗口消息映射、对话框管理等功能[^2]。 - 它也包含了对多线程的支持机制,使得开发者可以更容易地实现并发程序设计。 #### 2. 句柄与指针的区别 为了更好地理解和使用 AFX,在实际开发过程中需要注意句柄和指针之间的差异。虽然两者都可以用来引用某些对象或数据结构,但它们的工作方式完全不同: - **句柄**: 这是一个由操作系统分配并维护的唯一标识符,通常表现为整数形式。通过句柄访问资源时需要经过系统层面上的一次额外转换才能最终定位到目标地址。因此相比直接操纵裸露出来的物理内存位置更加安全可靠。 - **指针**: 则是指向确切存储单元的具体地址值。由于缺乏中间环节保护措施的缘故,在错误情况下容易引发不可预测的行为甚至崩溃现象发生。 这种设计理念让基于句柄的操作变得相对简单而稳健;然而正如前面提到过的那样——因为受限于各自所属进程/线程内部环境下的可见范围局限性,所以一般无法跨边界共享这些类型的变量实例除非借助特殊的全局接口像`AfxGetMainWnd()`之类的方法才行。 #### 3. 示例代码展示如何利用虚拟纯函数配合 RTTI 实现动态绑定特性 下面给出了一段简单的 C++ 类声明作为例子说明如果结合运行期类型识别(RTTI),则能够进一步增强灵活性从而满足更多场景需求: ```cpp class Derived : public Base { public: void f1() override {} void f2() override {} const char* className() const noexcept { return typeid(*this).name(); // 使用RTTI获取当前实例的实际类型名称 } }; ``` 在这里我们继承自 `Base` 并重写了两个抽象成员方法的同时新增了一个辅助查询自身类别字符串表示形式的新成员函数 `className()` 。当调用此方法的时候便会返回对应派生类别的标准描述信息而不是基底版本的内容了[^1]^。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值