当前位置:首页 » 多媒体相关

高手解释一下Attach()和Detach得用法,谢谢。


看别人得程序,常用到attach()和detach()(cwnd的)。  
  不明白这两个函数有什么用,  
  在什么场合需要使用这两个函数。  
   
  请高手给解释一下,谢谢。

推荐阅读

  • 中移动与爱立信签定协议 扩建两广GMS网络 [详细内容]
  • 惊现SC的NDS内核研发成功! [详细内容]
  • 偶然发现延长E318待机时间的一种笨方法 [详细内容]
  • 深圳市工商部门查封一废旧手机电池翻新窝点 [详细内容]
  • 神游百事再携手,七喜版iQue DS冰爽亮相! [详细内容]
  • 关于C650拍照时暴光度的调节 [详细内容]
  • itglieder.FK木马来袭 方正熊猫免费杀毒 网络安全频道 [详细内容]
  • 网友回答:
    网友:sunyuan_01

     
      attach()就是将windows窗口句柄与cwnd对象相连接  
      通常用在已存在内存实例对象与cwnd对象相连接  
      只样的意思是实例对象已被创建,但没有相对应的抽象类给以操作,用cwnd连接后就以cwnd对象来替代实例对象操作  
      detach()是相反操作

    网友:9731boy

    ^o^

    网友:jennifergiant

    up  
      就是这个意思

    网友:gzshd

    attach是连接的意思,在很多地方都可以看到  
      如在office自动化编程里,attach可以连接一个已被打开的文档  
     

    网友:numen27

    mfc把一些东西的句柄给包装起来了,然后把相关的操作都提供给用户,这就形成了相关的一些类和操作,像cmemu,cwnd等都是这么包装的,attach就是把一个句柄包装成一个对象,detach刚好相反,把句柄从对象里面卸下来.

    网友:houdy

    要明白attch(),首先你要明白c++类对象(mfc类对象)和句柄之间是由区别的,当然你要明白句柄的含义。可以几个例子.  
          cwnd   wnd;//这里声明了一个cwnd类的对象,也就是在内存中分配了一段内存,存的就是一个cwnd对象。  
          window中把每一个实际存在的窗口都用一个句柄表示handle.handle说白了就是指针的指针。  
          如果你需要将你声明的cwnd类对象和一个window实例联系起来,就需要用attch().  
      给个建议:多看看例子,多理解一下,就明白了。

    网友:yndfcd

    mfc中每一个cwnd类的对象对应了一个句柄,并且只能对应一个句柄。  
      mfc在内部维护了一个hwnd到cwnd类的映射表。可以查找哪个hwnd对应哪个cwnd类的对象。  
      如: cwnd*   pwnd   =   cwnd::fromhandlepermanent(hwnd);  
      也可以为某个hwnd   建立一个暂时的对象,如cwnd*   pwnd   =   cwnd::fromhandle(hwnd);  
      这个对象将在程序的空闲时间被删除。  
     

    网友:yndfcd

    还有一句要说的,就是并不是每一个hwnd都有一个对象与之对应。

    网友:limd

    attach就是装箱操作,把一个句柄包装成一个对象;而detach就是拆箱操作,把句柄从对象里面卸下来,我是这样理解的。  
     

    .

    讨论区

    Login