FIX: The Windows Common Controls Mscomctl.ocx or Comctl32.ocx may cause your application or the Visual Basic 6 IDE to unexpectedly quit, or you may receive a "Divide By Zero" error message

Mainstream Support for Microsoft Visual Basic 6.0 ended on March 31, 2005. Microsoft is releasing this package that is unrelated to security because it contains improvements that were ready for release just before the end of Mainstream Support. Visual Basic 6.0 has transitioned to Extended Support, and Extended Support runs through March 31, 2008. Microsoft is not extending the Mainstream Support phase for Visual Basic 6.0 in any way.


There are two versions of the Microsoft Windows Common Controls. Comctl32.ocx contains Windows Common Controls 5.0 and was included with Microsoft Visual Studio 5.0. Mscomctl.ocx contains Windows Common Controls 6.0 and was included with Visual Studio 6.0. This hotfix fixes the following critical bugs in these controls.

Windows Common Controls 5.0: Comctl32.ocx

Consider the following scenario.
  • You are running an application that sets a WinEvent hook on Microsoft Windows 2000 or a later operating system version.
  • You start an application that uses the ListView control or the TreeView control from Microsoft Windows Common Controls 5.0.
In this scenario, your application may unexpectedly quit, or you may receive an error message that is similar to the following:
Project1: Project1.exe - Application Error

The instruction at "0x202d0f51" referenced memory at "0x40000001". The memory could not be "written". Click on OK to terminate the program
Note Typically, accessibility applications that are built on Microsoft Active Accessibility set a WinEvent hook. For example, Narrator is built on Microsoft Active Accessibility. However, utilities that run on the Microsoft Windows XP Tablet PC Edition operating system also set a WinEvent hook.

Windows Common Controls 6.0: Mscomctl.ocx

If you are running an application that uses Mscomctl.ocx version or a later version and the application contains a ListView control with the AllowColumnReorder property set to True, you receive the following error message when you try to reorder the columns:
Project1: Project1.exe - Application Error
The instruction at "0x27618848" referenced memory at "0x016e1e90". The memory could not be "read".
Depending on the default debugger setup for your system, you may also receive a "0xC0000094 Divide By Zero" error message or the application may unexpectedly quit.

Note If you run your application in the Visual Basic 6 IDE, you will also experience both of these problems.


The problem with Windows Common Controls 5.0 occurs because Comctl32.ocx tries to copy the text member of a ListView item by using a mask of LVI_IMAGE that has a NULL text member.

The problem with Windows Common Controls 6.0 occurs because of a change in version of the Mscomctl.ocx file. Version is included with hotfix 826287. Version of the Mscomctl.ocx file changes the behavior of the ListView control when Visual Studio 6.0 is running on a computer that is running Windows XP or a later operating system. Most of the ImageList control calls in Mscomctl.ocx are wrappers of calls into the ImageList shell common control class that is defined in Comctl32.dll. However, the ImageList_GetImageRect method is not wrapped. This method still uses the earlier version of the ImageList structure and the earlier version of the ImageList control class that are defined in the Mscomctl.ocx file. This design causes a divide-by-zero error to occur during the column reorder operation.


Important If the application that you are running was provided to you by a third party, you may want to contact the third party that provided the application to you before you install the fix. For example, you did not develop the application yourself. If you install this fix without sufficient testing, the applications may stop functioning.

Note The enclosed fix cannot be uninstalled or removed after it is installed.

The following file is available for download from the Microsoft Download Center:
Download Download the Visual Basic 6.0 Common Controls package now.For more information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:
119591 How to obtain Microsoft support files from online services
Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help prevent any unauthorized changes to the file.

A supported fix is available from Microsoft for Visual Basic 6 SP6.
The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
   Date         Time   Version    Size       File name
18-Aug-2003 20:25 1,344,512 Comctl32.ocx
02-Nov-2004 00:16 1,064,208 Mscomctl.ocx


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

More Information

For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:

827217 FIX: Access violation in Comctl32.ocx on Windows 2000 or later

824684 Description of the standard terminology that is used to describe Microsoft software updates


Article ID: 896559 - Last Review: Jun 11, 2009 - Revision: 1