FIX: 的 Windows 公共控件 Mscomctl.ocx 或 Comctl32.ocx 可能导致您的应用程序或 Visual Basic 6 IDE 意外请退出,或者您可能会收到一条"相割按零"的错误消息

文章翻译 文章翻译
文章编号: 896559 - 查看本文应用于的产品
注意
主流支持 Microsoft Visual Basic 6.0 在 2005 年三月 31 日结束。Microsoft 已发布是与安全无关的因为它包含已准备好发布的主流支持结束之前的改进此程序包。Visual Basic 6.0 中转换为扩展的支持和延长支持穿过 2008 年 3 月 31。Microsoft 不在主流支持阶段扩展为 Visual Basic 6.0 中以任何方式。
展开全部 | 关闭全部

本文内容

症状

有两个版本的 Microsoft Windows 公共控件。Comctl32.ocx 包含 Windows 公共控件 5.0 和所包含的 Microsoft Visual Studio 5.0。Mscomctl.ocx 包含 Windows 公共控件 6.0 和所包含的 Visual Studio 6.0。此修补程序修复了这些控件中的以下关键错误。

Windows 公共控件 5.0: Comctl32.ocx

请考虑以下情形。
  • 您正在运行的应用程序设置 WinEvent 挂接在 Microsoft Windows 2000 或更高版本的操作系统版本上。
  • 您开始使用 ListView 控件或 Microsoft Windows 公共控件 5.0 从 树视图 控件的应用程序。
在这种情况下您的应用程序可能会意外退出,或者您可能会收到与以下类似的错误消息:
Project1: Project1.exe-应用程序错误
在"0x202d0f51"指令引用"0x40000001"在内存。内存无法将"写入"。 单击确定以终止程序
注意通常,基于 Microsoft 活动访问的辅助功能应用程序设置 WinEvent 挂钩。例如对于 Microsoft 活动访问在建立了讲述人。然而,在 Microsoft Windows XP Tablet PC 版操作系统上运行的实用程序还设置 WinEvent 挂钩。

Windows 公共控件 6.0: Mscomctl.ocx

如果您正在使用 Mscomctl.ocx 6.1.97.64 版本的应用程序,或者更高版本和应用程序包含 ListView 控件与 AllowColumnReorder 属性设置为 true,则 您会收到以下错误消息,当您试图对列重新排序时:
Project1: Project1.exe-应用程序错误
在"0x27618848"指令引用"0x016e1e90"在内存。 内存不能将"读取"。
取决于您的系统默认调试器设置也可能会收到一个按零划分的 0xC0000094"错误消息或应用程序可能会意外退出。

注意如果在 Visual Basic 6 IDE 中运行应用程序,将也会遇到这些问题的两个。

原因

因为 Comctl32.ocx 试图通过使用掩码为具有空文本成员 LVI_IMAGE 复制 ListView 项的文本成员,将出现与 Windows 公共控件 5.0 问题。

出现用 Windows 公共控件 6.0 问题是由于版本 6.1.97.64 Mscomctl.ocx 文件中的更改。包括与修补程序 826287 版本 6.1.97.64。当正在运行 Windows XP 或更高版本的操作系统的计算机上运行 Visual Studio 6.0 时,版本 6.1.97.64 Mscomctl.ocx 文件的更改 ListView 控件的行为。大多数在 Mscomctl.ocx ImageList 控件调用的都是包装的调用到 ImageList 外壳公共控件类 Comctl32.dll 中定义的。但是,ImageList_GetImageRect 方法不能换行。此方法仍然使用 ImageList 结构的较早版本和早期版本的 ImageList 控件类在 Mscomctl.ocx 文件中定义的。此设计将导致列重新排序操作过程中发生被零除错误。

解决方案

重要如果您正在运行的应用程序由第三方提供给您,您可能需要联系第三方提供给您该应用程序在安装此修复程序之前的。例如对于您不开发应用程序自己。如果您没有足够的测试的情况下安装此修复程序,应用程序可能停止工作。

注意带圈的修复程序不能卸载或删除安装后。

以下文件是可从 Microsoft 下载中心下载:
收起这个图片展开这个图片
Download
Download the Visual Basic 6.0 Common Controls package now.
http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE
有关如何下载 Microsoft 支持文件的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591如何获取 Microsoft 的支持文件从联机服务
Microsoft 扫描此文件的病毒。Microsoft 使用该文件已过帐的日期上获得的最新病毒检测软件。该文件存储在安全增强型服务器上,这有助于防止未经授权的情况下对其进行更改,对该文件。

对于 Visual Basic 6 SP6 Microsoft 提供了一个受支持的修复程序。
此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间工具中的 时区 选项卡。
   Date         Time   Version    Size       File name
   ------------------------------------------------------
   18-Aug-2003  20:25  6.0.81.6   1,344,512  Comctl32.ocx     
   02-Nov-2004  00:16  6.1.97.86  1,064,208  Mscomctl.ocx     

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
827217FIX: Comctl32.ocx 上 Windows 2000 或更高版本中的访问冲突
824684用于描述 Microsoft 软件更新的标准术语的说明

属性

文章编号: 896559 - 最后修改: 2005年11月18日 - 修订: 2.4
这篇文章中的信息适用于:
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Studio 6.0 企业版
关键字:?
kbmt kbqfe kbvs600sp6 kbpending kbbug KB896559 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 896559
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com