我用ATL实现了IContextMenu接口在系统的上下文菜单中添加了一些菜单项,其中有一项是使用SHFileOperation来复制文件的功能。在调试程序时发现:在使用SHFileOperation复制文件的过程中,如果再次弹出上下文菜单,此时程序貌似被结束了,所分配的内存也没有被清理。请问高手如何解决呢?

解决方案 »

  1.   

    上下文环境没有描述清楚。你依据什么证明DLL结束了?组件的生命期有跟踪过吗?
      

  2.   

    在调试器中显示为SHFileOperation分配的内存没有被清理。如果等待文件复制完毕后再去弹出上下文菜单,则内存可以被清理...不知是不是要对工程进行什么设置的...组件的生命期如何跟踪的?再次请教专家...
      

  3.   

    在FinalRelease中就能知道组件即将结束。如果你不能确定多次弹出上下文菜单会有问题,那么可以自我设限,当执行文件操作的时候设置一个标志,下次上下文菜单禁止再次操作。
      

  4.   


    学习...
    我在工程类的InitInstance函数中返回FALSE,打算不让资源管理器载入组件,但这样资源管理器会出错...
      

  5.   

    ATL哪来的InitInstance?到底是ATL还是MFC?
      

  6.   

    在ATL工程中选择使用MFC...Win2000+VC6下写的...
      

  7.   

    可以在MFC中选择性使用ATL工具类,混合使用有很多潜在的问题,比如做组件时,ATL组件需要CxxxModule支持,MFC组件需要CWinThread支持,但这两样是不能共存的。
      

  8.   

    学习...晚上回去试试,谢谢专家jameshooo...