К сведению
Основная поддержка для Microsoft Visual Basic 6.0 закончилась 31 марта 2005 года. Microsoft выпускает этот не связанный с безопасностью пакет, посколько он содержит улучшения, разработка которых была завершена на момент окончания основной фазы поддержки. Visual Basic 6.0 переведён на дополнительную фазу поддержки, которая продлится до 31 марта 2008 года. Microsoft никоим образом не продлевает основную поддержку Visual Basic 6.0.
СИМПТОМЫ
Существует две версии Microsoft Windows Common Controls. Comctl32.ocx содержит Windows Common Controls 5.0 и распространяется с Microsoft Visual Studio 5.0. Mscomctl.ocx содержит Windows Common Controls 6.0 и включён в Visual Studio 6.0. Этот хотфикс исправляет следующие критические ошибки в этих файлах.
Windows Common Controls 5.0: Comctl32.ocx
В случае следующего хода событий:
- запущено приложение, устанавливающее хук WinEvent на Microsoft Windows 2000 или более поздней
- вы запускаете приложение, использующее элемент управления ListView или TreeView из Microsoft Windows Common Controls 5.0
- 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
Windows Common Controls 6.0: Mscomctl.ocx
Если запущено приложение, использующее Mscomctl.ocx версии 6.1.97.64 или более позднюю, в этом приложении используется ListView, у которого свойство AllowColumnReorder установлено в True, возникает следующее сообщение об ошибке при попытке изменить порядок столбцов ListView:
- Project1: Project1.exe - Application Error
The instruction at "0x27618848" referenced memory at "0x016e1e90". The memory could not be "read".
Примечание При работе из-под IDE перечисленные проблемы так же проявляются.
ПРИЧИНА
Проблема с Windows Common Controls 5.0 возникает потому, что Comctl32.ocx пытается скопировать текст, ассоциированный с элементом ListView, используя маску LVI_IMAGE, при этом указатель на текст равен NULL.
Проблема с Windows Common Controls 6.0 возникает из-за изменений в Mscomctl.ocx версии 6.1.97.64. Версия 6.1.97.64 включена в хотфикс 826287. В ней изменяется поведение элемента управления ListView, когда Visual Studio 6.0 запущена на компьютере с Windows XP или более поздней версией операционной системы. Большинство методов элемента ImageList в Mscomctl.ocx представляют собой обёртки вызовов системного класса ImageList, описанного в Comctl32.dll. Однако для метода ImageList_GetImageRect обёртка не создана. Этот метод по-прежнему использует более раннюю версию структуры ImageList и более раннюю версию класса ImageList, которые определены в файле Mscomctl.ocx. Такой дизайн вызывает ошибку деления на ноль при изменении порядка следования столбцов.
РЕШЕНИЕ
Важно Если используемое приложение было предоставлено третьей стороной, следует связаться с ней до установки фикса (к примеру, если вы не разработали приложение самостоятельно). Если установить фикс без надлежащего тестирования, приложение может перестать функционировать.
Примечание Прилагаемый фикс не предусматривает возможности деинсталлирования после установки.
Следующий файл доступен для загрузки:
http://www.microsoft.com/downloads/deta ... 662F5F62FE
Для получения дополнительной информации о том, как скачивать файлы Microsoft Support, обратитесь к следующей статье в Microsoft Knowledge Base:
119591 How to obtain Microsoft support files from online services
Microsoft проверила этот файл на вирусы с использованием новейшего антивирусного программного обеспечения, доступного на момент опубликования файла. Файл хранится на защищённых серверах, не допускающих несанкционированных изменений содержимого файлов.
СОСТОЯНИЕ
Microsoft подтвержает, что это проблема в продуктах Microsoft, перечисленных ниже в разделе "Применимо к".
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Для получения дополнительной информации, обратитесь к следующим статьям Microsoft Knowledge Base:
827217 FIX: Access violation в Comctl32.ocx на Windows 2000 и выше
824684 Описание стандартной терминологии, используемой для описания обновлений продукции Microsoft
ПРИМЕНИМО К
- Microsoft Visual Basic 6.0 Professional Edition
- Microsoft Visual Basic 6.0 Enterprise Edition
- Microsoft Visual Studio 6.0 Enterprise Edition