Os controles ActiveX MFC: Criando um servidor de automação

Você pode desenvolver um controle ActiveX MFC ActiveX sistema autônomo um servidor de automação para fins de incorporação que controle ActiveX em outro aplicativo e chamar métodos no controle ActiveX do aplicativo através de programação.Esse controle ainda estaria disponível para ser hospedada em um contêiner de controle ActiveX.

Para criar um controle sistema autônomo um servidor de automação

  1. Criar o controle.

  2. Adicione métodos.

  3. Substituir IsInvokeAllowed.Para obter mais informações, consulte o artigo do base de dados de conhecimento Q146120.

  4. compilação o controle.

Para acessar programaticamente os métodos em um servidor de automação

  1. Criar um aplicativo, por exemplo, um Exe do MFC.

  2. No início do InitInstance função, adicione a seguinte linha:

    AfxOleInit();
    
  3. No modo de exibição de classe, clicar com o botão direito do mouse no nó do projeto e selecionar Adicionar classe de typelib para importar a biblioteca de tipos.

    Isso adicionará arquivos com o .cpp e. h extensões de nome de arquivo para o projeto.

  4. No arquivo de cabeçalho da classe em que você chamará de um ou mais métodos no controle ActiveX, adicione a seguinte linha: #include filename.h, onde nome de arquivo é nome de arquivo de cabeçalho que foi criado quando você importou a biblioteca de tipos.

  5. Na função em que irá ser feita uma telefonar para um método no controle ActiveX, adicione um código que cria um objeto de classe de invólucro do controle e criar o objeto ActiveX.Por exemplo, o código a seguir MFC instancia um CCirc controle, obtém a propriedade legenda e exibe o resultado quando o botão OK é clicado em uma caixa de diálogo:

    void CCircDlg::OnOK()
    {
       UpdateData();   // Get the current data from the dialog box.
       CCirc2 circ;    // Create a wrapper class for the ActiveX object.
       COleException e;   // In case of errors
    
       // Create the ActiveX object. 
       // The name is the control's progid; look it up using OleView
       if (circ.CreateDispatch(_T("CIRC.CircCtrl.1"), &e)) 
       {
          // get the Caption property of your ActiveX object
          // get the result into m_strCaption
          m_strCaption = circ.GetCaption();
          UpdateData(FALSE);   // Display the string in the dialog box.
       }
       else   { // An error
          TCHAR buf[255];
          e.GetErrorMessage(buf, sizeof(buf) / sizeof(TCHAR));
          AfxMessageBox(buf);   // Display the error message.
       }
    }
    

Se você adicionar métodos ao controle ActiveX depois que você usa em um aplicativo, você pode começar a usar a versão mais recente do controle no aplicativo, excluindo os arquivos que foram criados quando você importou a biblioteca de tipos.Em seguida, importe a biblioteca de tipos novamente.

Consulte também

Conceitos

Controles do ActiveX MFC