关于attach和detach的疑问

本文解释了attach和detach在C++与WINDOWS对象关联中的作用。attach建立C++对象与WINDOWS对象之间的映射,若未使用detach解除关联,在C++对象销毁时,WINDOWS对象也将被销毁。文章还介绍了两种映射表——永久映射表与临时映射表的区别及其应用场景。
            attach是把一个C++对象与一个WINDOWS对象关联,直到用detach则把关联去掉。   
 如果attach了以后没有detach,则C++对象销毁的时候WINDOWS对象跟着一起完蛋。  
           attach了以后,C++对象的指针和WINDOWS对象的HWND会有一个映射关系,其作用相当于你直接用一个C++对象去Create一个WINDOWS对象,例如   CEdit   edit;   edit.create(...)   ,并且此映射是永久的,直到此对象完蛋为止。  
           如果用类似GetDlgItem函数也可以返回一个指针,并可以强制转换。GetDlgItem会到映射表里找。  
            有2种映射表,一中是永久的,一种是临时的。  
            直接用C++对象创建的WINDOWS对象或者是通过attach的对象的映射关系都被放到永久表中,否则就在临时表中创建映射.所以GetDlgItem不推荐你保存返回的指针,因为你很难保证你的WINDOWS对象跟C++对象的关联是否放在永久表中。  
              如果映射是放在临时表中,那么在空闲时间会被自动删除。  
              用attcah完全是为了方便用MFC类的成员函数去操纵WINDOWS对象。  
  如果还对这个不明白的话,请看《由GetDlgItem函数想到的》一文  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值