关于attach和detach的疑问

            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函数想到的》一文  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值