vb6应用程序,用户点击窗口上的X后,管理模块发出事件 Form_QueryLoad, Form_Load 然后用户响应后,管理模块开始卸载窗体,清除一些对象释放内存等等。
本人需要这个过程的详细步骤。管理模块到底是咋工作的哪些对象、数据等是管理模块释放的,哪些必须由应用程序自己释放。网上完全找不到这方面的资料

解决方案 »

  1.   

    卸载窗体是有顺序的,严禁使用For each .. in Forms 卸载窗体,特别是各窗体引用了对象之后。先卸载哪些窗体,后卸载哪些窗体,确定好,依次Unload。一般说来,在卸载窗体之前,要先清空所有对象,消除各窗体之间对象的引用关系,卸载HOOK,卸载子类化等,准备工作做完之后,就可以依次Unload了。
    需要注意的是,MSDN上有说明:在卸载窗体时,只有显示的部件被卸载。和该窗体模块相关联的代码还保持在内存中。
      

  2.   

    这个,查阅一下MSDN是不错的选择。慢慢看。不是一言两语能说清楚的。
      

  3.   

    QueryUnload 事件
    MSDN的解释是:
    此事件的典型用法是在关闭一个应用程序之前用来确保包含在该应用程序中的窗体中没有未完成的任务。例如,如果还未保存某一窗体中的新数据,则应用程序会提示保存该数据。当一个应用程序关闭时,可使用 QueryUnload 或 Unload 事件过程将 Cancel 属性设置为 True 来阻止关闭过程。但是,QueryUnload 事件是在任一个卸载之前在所有窗体中发生,而 Unload 是在每个窗体卸载时发生。----------------------------------------QueryUnload事件是在窗体卸载之前发生,Unload事件是在窗体卸载时发生。QueryUnload事件发生在Unload之前。
      

  4.   

    最权威的当然数MSDN6.0 太大,网上搜一下,自己下载一个
      

  5.   

    QueryUnload 事件
          在一个窗体或应用程序关闭之前发生。当一个 MDIForm 对象关闭时,QueryUnload 事件先在 MDI 窗体发生,然后在所有 MDI 子窗体中发生。如果没有窗体取消 QueryUnload 事件,该 Unload 事件首先发生在所有其它窗体中,然后再发生在 MDI 窗体中。当一个子窗体或一个 Form 对象关闭时,在那个窗体中的 QueryUnload 事件先于该窗体的 Unload 事件发生。语法Private Sub Form_QueryUnload(cancel As Integer, unloadmode As Integer)Private Sub MDIForm_QueryUnload(cancel As Integer, unloadmode As Integer)QueryUnload 事件语法包括下列部分:部分 描述 
    cancel 一个整数。将此参数设定为除 0 以外的任何值,可在所有已装载的窗体中停止 QueryUnload 事件,并阻止该窗体和应用程序的关闭。 
    unloadmode 一个值或一个常数,如返回值中所描述的,它指示引起 QueryUnload 事件的原因。 
    返回值unloadmode 参数返回下列值:常数 值 描述 
    vbFormControlMenu 0 用户从窗体上的“控件”菜单中选择“关闭”指令。 
    vbFormCode 1 Unload 语句被代码调用。 
    vbAppWindows 2 当前 Microsoft Windows 操作环境会话结束。 
    vbAppTaskManager 3 Microsoft Windows 任务管理器正在关闭应用程序。 
    vbFormMDIForm 4 MDI 子窗体正在关闭,因为 MDI 窗体正在关闭。 
    vbFormOwner 5 因为窗体的所有者正在关闭,所以窗体也在关闭。 
    这些常数是在对象浏览器中的 Visual Basic (VB) 对象库中列出。说明此事件的典型用法是在关闭一个应用程序之前用来确保包含在该应用程序中的窗体中没有未完成的任务。例如,如果还未保存某一窗体中的新数据,则应用程序会提示保存该数据。当一个应用程序关闭时,可使用 QueryUnload 或 Unload 事件过程将 Cancel 属性设置为 True 来阻止关闭过程。但是,QueryUnload 事件是在任一个卸载之前在所有窗体中发生,而 Unload 是在每个窗体卸载时发生。
      
    ………………3楼的和这个就来自于vb6的帮助……Unload 事件
          当窗体从屏幕上删除时发生。当那个窗体被重新加载时,它的所有控件的内容均被重新初始化。当使用在 Control 菜单中的 Close 命令或 Unload 语句关闭该窗体时,此事件被触发。语法Private Sub object_Unload(cancel As Integer)Unload 事件语法包括下列部分:部分 描述 
    Object 一个对象表达式,其值是“应用于”列表中的一个对象。 
    Cancel 一个整数,用来确定窗体是否从屏幕删除。如果 cancel 为 0,则窗体被删除。将 cancel 设置为任何一个非零的值可防止窗体被删除。 
    说明将 cancel 设置为任何非零的值可防止窗体被删除,但不能阻止其它事件,诸如从 Microsoft Windows 操作环境中退出等。可用 QueryUnload 事件阻止从 Windows 中的退出。在窗体被卸载时,可用一个 Unload 事件过程来确认窗体是否应被卸载或用来指定想要发生的操作。也可在其中包括任何在关闭该窗体时也许需要的验证代码或将其中的数据储存到一个文件中。QueryUnload 事件在 Unload 事件之前发生。Unload 事件在 Terminate 事件之前发生。使用 Unload 语句或在一个窗体的“控件”菜单上选择“关闭”命令,用“任务窗口”列表上的“结束任务”按钮退出应用程序,在当前窗体为其一个子窗体的情况下关闭该 MDI 窗体,或当应用程序正在运行的时候退出 Microsoft Windows 操作环境等情况都可引发 Unload 事件。
      

  6.   

    看本机的 MSDN 帮助 Visual Basic 窗体的存活期
    在线版本 Life Cycle of Visual Basic Forms