Artigo: 196342 - Última revisão: segunda-feira, 18 de Junho de 2001 - Revisão: 1.0

PROBLEMA: ActiveDesktop erros de compilação no Visual C++ 6.0 MFC

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.
Expandir tudo | Reduzir tudo

Sintomas

Compilar o código relacionado com a interface IActiveDesktop irá falhar em Visual C++ 6.0 Microsoft Foundation Classes (MFC), com vários erros, incluindo um "identificador não declarado" para LPACTIVEDESKTOP.

Tenha em atenção que isto ocorre especificamente quando compilar um programa MFC utilizando o Visual C++ 6.0. Não existe nenhum relatório de ocorrer o problema em versões anteriores do MFC ou o caso de Visual C++ 6.0 geral onde C ou C++ programas estão a ser compilados.

Causa

Quando uma aplicação MFC inclui o ficheiro de cabeçalho Stdafx.h, *\Vc98\Mfc\Include\Afxdisp.h ficheiro está incluído por predefinição. No Afxdisp.h o ficheiro Shlobj.h (necessário para ActiveDesktop) é incluído. Mas neste momento, Wininet.h não foi incluído, para determinadas partes do Shlobj.h não são correctamente inicializados para ActiveDesktop suporte.

A inclusão de Shlobj.h por Afxdisp.h também define uma variável a impedir Shlobj.h sejam incluídos duas vezes. Mais tarde, quando uma aplicação MFC explicitamente e correctamente inclui Wininet.h seguido Shlobj.h, definida anteriormente variável impede que a inclusão de Shlobj.h segunda e também impede definições ActiveDesktop críticas, como, por exemplo, para LPACTIVEDESKTOP, que está a ser feita.

Resolução

Adicionar um # include para o cabeçalho Wininet.h para o ficheiro de cabeçalho pré-compilada Stdafx.h, imediatamente acima do Afxdisp.h incluir. Eis um exemplo de Stdafx.h:
// stdafx.h : include file for standard system include files,

...

#include <wininet.h>
#include <afxdisp.h>        // MFC Automation classes

...

#endif //!defined(AFX_STDAFX_H__D5E466A9...
				
depois de corrigir Stdafx.h, reconstrua o projecto inteiro para garantir que o cabeçalho da pré-compilado é re-compiled.

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbactivedesktop kbprb KB196342 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: 196342  (http://support.microsoft.com/kb/196342/en-us/ )