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

Article translations Article translations
Article ID: 896559 - View products that this article applies to.
Notice
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.
Expand all | Collapse all

On This Page

SYMPTOMS

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 6.1.97.64 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.

CAUSE

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 6.1.97.64 of the Mscomctl.ocx file. Version 6.1.97.64 is included with hotfix 826287. Version 6.1.97.64 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.

RESOLUTION

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:
Collapse this imageExpand this image
Download
Download the Visual Basic 6.0 Common Controls package now.
http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE
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  6.0.81.6   1,344,512  Comctl32.ocx     
   02-Nov-2004  00:16  6.1.97.86  1,064,208  Mscomctl.ocx     

STATUS

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

Properties

Article ID: 896559 - Last Review: November 18, 2005 - Revision: 2.4
APPLIES TO
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Studio 6.0 Enterprise Edition
Keywords: 
kbqfe kbvs600sp6 kbpending kbbug KB896559

Give Feedback

 

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