VBStreets конференция

Целият вкус на програмирането!

  • Списък на форумитеЗнаниеБаза знания на VBStreets
  • Променете размера на шрифта
  • За печат
  • ЧЗВ
  • вход

KB896559: Най-новото FIX за общи контроли

KB896559: Най-новото FIX за общи контроли

СИМПТОМИ
Има две версии на 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 5.0: Comctl32.ocx
В случай на следния ход на събитията:

  • изпълнява се приложение, което инсталира куката WinEvent в Microsoft Windows 2000 или по-нова версия
  • стартирате приложение, използвайки контрола ListView или TreeView от Microsoft Windows Common Controls 5.0
приложението може да прекрати неочаквано или да генерира съобщение за грешка като:
    Project1: Project1.exe - Грешка в приложението
    Инструкцията в "0x202d0f51" препраща към паметта на "0x40000001". Паметта не може да бъде „записана“. Щракнете върху OK, за да прекратите програмата
Забележка Обикновено куката WinHook се инсталира от приложения, изградени на Microsoft Active Accessibility. Например разказвачът е изграден върху него. Но помощните програми, работещи под Microsoft Windows XP Tablet PC Edition, също инсталират тази кука.

Общи контроли на Windows 6.0: Mscomctl.ocx
Ако изпълнявате приложение, което използва Mscomctl.ocx версия 6.1.97.64 или по-нова, това приложение използва ListView, който има свойството AllowColumnReorder, зададено на True, при опит за пренареждане на колоните ListView възниква следната грешка:

    Project1: Project1.exe - Грешка в приложението
    Инструкцията в "0x27618848" препраща към паметта при "0x016e1e90". Паметта не може да бъде „прочетена“.

В зависимост от инсталирания в системата дебъгер по подразбиране, може също да получите грешка "0xC0000094 Разделяне по нула" или неочаквано прекратяване на приложението.

Забележка Когато работите под 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. Този дизайн причинява деление на нула грешка при промяна на реда на колоните.


РЕШЕНИЕ
Важно Ако приложението, което използвате, е предоставено от трета страна, трябва да се свържете с тях, преди да инсталирате корекцията (например, ако не сте разработили приложението сами). Ако инсталирате корекция без подходящо тестване, приложението може да спре да функционира.

Забележка Приложената корекция не предвижда възможността за деинсталиране след инсталиране.

За повече информация относно изтеглянето на файлове за поддръжка на Microsoft вижте следната статия в базата знания на Microsoft:
119591 Как да получите файлове за поддръжка на Microsoft от онлайн услуги


ДЪРЖАВА
Microsoft потвърди, че това е проблем в продуктите на Microsoft, изброени в раздела „Отнася се за“ по-долу.

ПРИЛОЖИМ ЗА

  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Studio 6.0 Enterprise Edition