Artigo: 896559 - Última revisão: sexta-feira, 18 de Novembro de 2005 - Revisão: 2.4

CORRECÇÃO: O mscomctl.ocx controlos comuns do Windows ou Comctl32.ocx poderá provocar a aplicação ou o Visual Basic 6 IDE inesperadamente ou poderá receber uma mensagem de erro "Dividir por zero"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Importante
Suporte base para o Microsoft Visual Basic 6.0 terminou de 31 de Março de 2005. Microsoft está a lançar este pacote é não relacionado à segurança porque contém melhoramentos que foram prontos para edição apenas antes do fim do suporte de base. Visual Basic 6.0 tem transitar para o suporte expandido e Suporte Extendido executa a 31 de Março de 2008. Microsoft é não expandir a fase de suporte base para o Visual Basic 6.0 de qualquer forma.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Existem duas versões dos controlos comuns do Microsoft Windows. Comctl32.ocx contém 5.0 controlos comuns do Windows e foi incluído no Microsoft Visual Studio 5.0. Mscomctl.ocx contém 6.0 controlos comuns do Windows e foi incluído no Visual Studio 6.0. Esta correcção corrige os seguintes erros críticos existentes nestes controlos.

Controlos comuns do Windows 5.0: Comctl32.ocx

Considere o seguinte cenário.
  • Está a executar uma aplicação que define uma rotina WinEvent no Microsoft Windows 2000 ou uma versão posterior do sistema operativo.
  • Iniciar uma aplicação que utiliza o controlo ListView ou no controlo TreeView a partir do Microsoft Windows comum controlos 5.0.
Neste cenário, a aplicação poderá terminar inesperadamente ou poderá receber uma mensagem de erro semelhante à seguinte:
Projeto1: Project1.exe - Erro de aplicação
A instrução no "0x202d0f51" referência à memória no "0x40000001". A memória não pôde ser "escrita". Clique em OK para terminar o programa
Nota Normalmente, aplicações de acessibilidade estão incorporadas no Microsoft Active Accessibility definir uma rotina WinEvent. Por exemplo, o Narrator é criado no Microsoft Active Accessibility. No entanto, utilitários executar no sistema operativo Microsoft Windows XP Tablet PC Edition também definir uma rotina WinEvent.

Controlos comuns do Windows 6.0: mscomctl.ocx

Se estiver a executar uma aplicação que utilize mscomctl.ocx versão 6.1.97.64 ou uma versão posterior e a aplicação contém um controlo ListView com a propriedade AllowColumnReorder definida como true , receberá a seguinte mensagem de erro quando tentar reordenar as colunas:
Projeto1: Project1.exe - Erro de aplicação
A instrução no "0x27618848" referência à memória no "0x016e1e90". A memória não pôde ser "lida".
Consoante a configuração do depurador predefinido para o seu sistema, também poderá receber uma mensagem de erro "0xC0000094 divisão por zero" ou a aplicação poderá ser terminado inesperadamente.

Nota Se executar a aplicação no IDE do Visual Basic 6, também irá detectar ambos estes problemas.

Causa

O problema com o Windows comum controlos 5.0 ocorre porque Comctl32.ocx tenta copiar o membro de texto de um item ListView utilizando uma máscara de LVI_IMAGE com um membro de texto NULL.

O problema com o Windows 6.0 de controlos comuns ocorre devido a uma alteração na versão 6.1.97.64 do ficheiro mscomctl.ocx. Versão 6.1.97.64 incluída com a correcção 826287. Versão 6.1.97.64 do ficheiro mscomctl.ocx altera o comportamento do controlo ListView quando Visual Studio 6.0 está em execução num computador com o Windows XP ou um sistema operativo posterior. A maioria das chamadas de controlo de ImageList no mscomctl.ocx são wrappers de chamadas para a ImageList shell comuns controlo classe que está definido no ficheiro Comctl32.dll. No entanto, o método ImageList_GetImageRect não é moldado. Este método utiliza ainda a versão anterior da estrutura ImageList e a versão anterior da classe de controlo de ImageList definido no ficheiro mscomctl.ocx. Esta estrutura faz com que um erro de divisão por zero para ocorrer durante a operação de reordenar colunas.

Resolução

importante Se a aplicação que estiver a utilizar foi fornecida por terceiros, poderá contactar o fabricante da aplicação que, antes de instalar a correcção. Por exemplo, não desenvolver a aplicação manualmente. Se instalar esta correcção sem efectuar testes suficientes, as aplicações poderão deixar de funcionar.

Nota Não é possível ser desinstalada ou removida depois de instalada a correcção incluída.

O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:
Reduzir esta imagemExpandir esta imagem
Download
Download the Visual Basic 6.0 Common Controls package now. (http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE)
http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE (http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE)
Para obter mais informações sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591  (http://support.microsoft.com/kb/119591/ ) Como obter ficheiros de suporte da Microsoft a partir de serviços online
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada o que ajuda a impedir alterações não autorizadas ao ficheiro.

Tem uma correcção disponibilizada pela Microsoft para o Visual Basic 6 SP6.
A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   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     

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
827217  (http://support.microsoft.com/kb/827217/ ) CORRECÇÃO: Violação de acesso em Comctl32.ocx no Windows 2000 ou posterior
824684  (http://support.microsoft.com/kb/824684/ ) Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Studio 6.0 Enterprise Edition
Palavras-chave: 
kbmt kbqfe kbvs600sp6 kbpending kbbug KB896559 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 896559  (http://support.microsoft.com/kb/896559/en-us/ )