BUG:在 CoolBar 栏中设置 ComboBox 控件时可能出现一般保护错误

本文已归档。它按“原样”提供,并且不再更新。
症状
如果您的 Visual Basic 应用程序在 CoolBar 控件栏中设置了一个 ComboBox 控件,该应用程序在 Microsoft Visual Studio 6.0 Service Pack 4 (SP4) 之前的 Visual Basic 版本中会按预期方式工作。但是,如果您使用的是 SP4,当承载 CoolBar 控件的窗体关闭时,应用程序可能会停止响应(崩溃)。只有在 Windows 98 或 Windows 95 上运行的系统会出现崩溃。
原因
出现此现象的原因是 CoolBar 栏中设置的控件没有按时清除。
解决方案
要避免此问题,请向 Form_QueryUnload 事件处理程序中添加以下代码行:
CoolBarName.Bands.Clear				
状态
Microsoft 已经确认这是本文开头列出的 Microsoft 产品中的错误。
更多信息

重现问题的步骤

  1. 在 Windows 98 的 Visual Studio 6.0 SP4 中,使用 Visual Basic 创建一个标准 EXE 项目。默认情况下将创建 Form1。
  2. 组件对话框中,按 Ctrl+T 键,选择 Microsoft Windows 公共控件-3 6.0 (Sp4),然后单击确定
  3. 向 Form1 添加一个 CoolBar 控件。使用默认设置。
  4. 向其中一个 CoolBar 控件栏中添加一个 ComboBox 控件。
  5. 保存项目并按 F5 键运行应用程序。单击窗体右上角的 X 关闭该窗体,您会看到出现类似于以下内容的错误消息:
    Filename caused a general protection fault in module USER.EXE at 0004:00000499.

    This program has performed an illegal operation and will be shut down.If the problem persists, contact the program vendor.
    Filename 是您的项目的名称。

  6. 在集成开发环境 (IDE) 中重新打开该项目。有时重新打开 Visual Basic 会导致 Windows 崩溃,并且您可能需要重新启动计算机。您还可能会看到“resource is low”(资源不足)消息框,指示您需要关闭在后台运行的其他应用程序或驱动程序。
  7. 将以下代码添加到 Form1:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)    CoolBar1.Bands.ClearEnd Sub						
  8. 保存该项目并按 F5 键运行应用程序。单击窗体右上角的 X 关闭该窗体,您会注意到项目工作正常。

    注意:如果您单击 Visual Basic IDE 中的结束按钮来结束应用程序,您会注意到仍然出现此问题,原因是 Form_QueryUnload 事件处理程序没有机会运行。因此,不要使用 IDE 中的结束按钮来结束您的应用程序。要避免这一问题,您可以用 Visual Studio 6.0 Service Pack 版本 3 替换系统目录中的 SP4 版 Comct332.ocx 文件。同时,您仍然需要实现上一步中提到的变通解决方法。
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
189632 BUG:Error in CoolBar Event Can Cause Hanging or Exception
189914 BUG:Wrapped CoolBar Control May GPF Client EXE Program
257630 FIX:Exception Error Closing an Application Containing a CoolBar Control
Comct332 gpf halts halt
属性

文章 ID:269618 - 上次审阅时间:02/24/2014 00:41:33 - 修订版本: 2.1

Microsoft Visual Basic 6.0 专业版, Microsoft Visual Basic 6.0 企业版

  • kbnosurvey kbarchive kbbug kbfix kbvs600sp5fix KB269618
反馈