Artigo: 192560 - Última revisão: sexta-feira, 2 de Setembro de 2005 - Revisão: 3.0

Como adicionar suporte de contenção ATL controlo a qualquer janela no Visual C++

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

Sumário

Este artigo explica como adicionar capacidade de contenção de controlo genérico ATL (biblioteca de modelo de Active Directory) a qualquer janela, para que a janela pode conter controlos ActiveX. O suporte de contenção de controlo está em conformidade com a especificação de OCX 96 e suporta activação sem janelas e desenho livre de intermitência.

Mais Informação

Para adicionar a contenção de controlo, siga estes passos:
  1. Adicione os seguintes ficheiros de cabeçalho e directivas de pragma no código. Se pretender ligar ao código de contenção atl.dll, adicionar o seguinte código:
         // AtlAxWinInit is implemented in Atl.dll
             #pragma comment(lib, "atl.lib")
             #include <atldef.h>
             #define _ATL_DLL_IMPL
             #include <atliface.h>
    						
    atl.dll devem ser enviados quando utiliza o ATL contenção código, independentemente se que o tamanho mínimo construir ou dependência mínimo compilação. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    244955  (http://support.microsoft.com/kb/244955/ ) ATL projectos criados para MinDependency necessário atl.dll se os projectos utilizar ATL controlo contenção de código no Visual C++ 6.0
  2. Adicione o seguinte código do código de inicialização de aplicação, por exemplo no início do WinMain():
          //Initialize ATL control containment code.
             AtlAxWinInit();
    					
  3. Crie os controlos ActiveX: Utilize a função de Win32 CreateWindow() , especificar "AtlAxWin" como o nome da classe e, em seguida, especificar um GUID, um ID de programa ou um URL como o título. Por exemplo:
          // Create the Calendar control specifying the ProgID.
          // Make sure that the module handle you pass to CreateWindow is the
          // same module handle where AtlAxWinInit() was called from.
          HWND hWnd = ::CreateWindow("AtlAxWin", "MSCAL.Calendar",
             WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
             ::GetModuleHandle(NULL), NULL);
    
          // Same as above, except CLSID is specified instead of ProgID.
          // Corresponds to ProgID "MSCAL.Calendar.7"
          HWND hWnd = ::CreateWindow("AtlAxWin",
             "{8E27C92B-1264-101C-8A2F-040224009C02}",
             WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
             ::GetModuleHandle(NULL), NULL);
    
          // Creates the Web Browser control and navigates to the 
          // specified web page.
          HWND hWnd = ::CreateWindow("AtlAxWin", "http://www.microsoft.com", 
             WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
             ::GetModuleHandle(NULL), NULL);
    
    
          // Creates an instance of an dynamic HTML document.
          HWND hWnd = ::CreateWindow("AtlAxWin", "mshtml:<H1>Hello World</H1>",
             WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
             ::GetModuleHandle(NULL), NULL);
    					
  4. Se tiver adicionado _Module.Init() , adicione o seguinte código no código de terminação de aplicação (por exemplo, numa WinMain() , após o ciclo de mensagem):
    _Module.Term()
    					
Pode obter o IUnknown * do controlo através de AtlAxGetControl() . Para obter o IUnknown * do contentor, utilize AtlAxGetHost() . HWND devolvido CreateWindow() para o controlo é passado como o primeiro parâmetro em ambas as funções.

A informação contida neste artigo aplica-se a:
  • Microsoft ActiveX Template Library 3.0 nas seguintes plataformas
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Palavras-chave: 
kbmt kbatlwc kbcontainer kbctrl kbfaq kbhowto KB192560 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: 192560  (http://support.microsoft.com/kb/192560/en-us/ )